1、如何判斷棧滿?
棧滿的判斷可以根據兩個棧頂之間的距離來判斷,當棧滿時必然存在top2-top1 == 1。
int isfull(stack s)
2、從陣列頂端壓棧,棧頂是減1;從陣列底部壓棧,棧頂是加1;
3、從陣列頂端出棧,棧頂是加1;從陣列底部出棧,棧頂是減1;
c語言實現:
#include #include typedef struct snode *stack;
struct snode;
stack create_two_stack(int maxsize);
int isfull(stack s);
int is1empty(stack s);
int is2empty(stack s);
int push(stack s, int x, int tag);
int pop(stack s, int tag);
int main()
printf("棧1:\n");
for( ; !is1empty(s); )
printf("%d",pop(s,1));
printf("\n棧2:\n");
for( ; !is2empty(s); )
printf("%d",pop(s,2));
return 0;
}/*
** 建立兩個空棧
*/ stack create_two_stack(int maxsize)
/*** 判斷棧滿
*/int isfull(stack s)
/* ** 判斷棧1空
*/int is1empty(stack s)
/* ** 判斷棧2空
*/int is2empty(stack s) /*
** 壓棧
*/ int push(stack s, int x, int tag)
}/*
** 出棧
*/int pop(stack s, int tag)
else
} else
else
}}
堆疊 乙個陣列實現兩個堆疊
分析 一種聰明的辦法是使這兩個棧分別從陣列的兩頭向中間生長,當兩個指標相遇時,表時兩個棧都滿了。define maxsize 100 define elementtype int typedef struct strck,s s.top1 1 s.top2 maxsize 新增乙個元素 void p...
資料結構 堆疊佇列 在乙個陣列中實現兩個堆疊
6 3 在乙個陣列中實現兩個堆疊 20 分 時間限制 400 ms 記憶體限制 64 mb 長度限制 16 kb 本題要求在乙個陣列中實現兩個堆疊。stack createstack int maxsize bool push stack s,elementtype x,int tag elemen...
資料結構 乙個陣列實現兩個棧
乙個陣列實現兩個棧有很多想法,我先寫一種比較簡單的,思路如下圖所示 如下 includeusing namespace std 乙個陣列實現兩個棧 template class arraystack void pusharray1 const t x else cout 該棧已滿 0 else co...