C語言實現兩棧空間共享

2022-07-21 05:06:08 字數 1401 閱讀 8277

乙個同學讓我改一段兩棧共享的c語言**,實現進棧、出棧、輸出棧裡元素的功能。

**如下:

#include #include 

#define maxsize 100 typedef

intelemtype;

typedef

intstatus;

typedef

struct

stack, *pstack;

//初始化

status initstack(pstack s)

//入棧函式

status push_stack(pstack s, elemtype e, int

stacknumber)

return1;

}//出棧函式

status pop_stack(pstack s, elemtype *e, int

stacknumber)

else

if (2 ==stacknumber)

return1;

}//輸出棧中的元素

status dispstack(pstack s, int

stacknumber)

printf(

"棧1中的元素為:");

for (i = 0; i <= s->top1; i++)

printf(

"%d

", s->data[i]);

printf("\n

");printf(

"棧頂元素為:%d\n

", s->data[s->top1]);

}else

if (2 ==stacknumber)

printf(

"棧2中的元素為:");

for (i = maxsize - 1; i >= s->top2; i--)

printf(

"%d

", s->data[i]);

printf("\n

");printf(

"棧頂元素為:%d\n

", s->data[s->top2]);

}}int main(void

)

else

if(1!=n && 2!=n)

printf(

"請輸入元素值:\n");

scanf_s("%d

", &tmp);

if (1 == n || 2 ==n)}}

while (true

)

else

if (n == 2

)

else

}system(

"pause");

return0;

}

兩棧共享空間 java實現

如果我們有兩個相同型別的棧,我們為他們各自開闢了陣列空間,極有可能第乙個棧已經滿了,再進棧就溢位了,而另乙個棧還有很多儲存空間空閒。這時,我們可以充分利用順序棧的單向延伸的特性,使用乙個陣列來儲存兩個棧,讓乙個棧的棧底為陣列的始端,另乙個棧的棧底為陣列的末端,每個棧從各自的端點向中間延伸。如下圖所示...

棧 兩棧共享空間

對於乙個棧,我們只能盡量考慮周全,設計出合適大小的陣列處理。但是,對於兩個相同型別的棧,我們卻可以做到最大限度地利用其事先開闢的儲存空間進行操作。我們可以用乙個陣列來儲存兩個棧,只不過需要一點小技巧。陣列有兩個端點,兩個棧有兩個棧底,讓乙個棧的棧底為陣列的始端,即下標為0處。另乙個棧的棧底為陣列的末...

兩棧共享空間

include include include define ok 1 define error 0 define maxsize 20 typedef int selemtype typedef int status typedef struct sqdoublestack 雙頭棧的初始化 sta...