在這裡插入**片
#include
#define stack_size 64
/*棧大小*/
#define top_of_stack -1
/*棧頂位置*/
typedef
int elementtype;
/*棧元素型別*/
#define success 0
#define failure -1
/*定義棧結構*/
typedef
struct stackinfo
stackinfo_st;
/*函式宣告*/
intstack_push
(stackinfo_st *s,elementtype value)
;int
stack_pop
(stackinfo_st *s,elementtype *value)
;int
stack_top
(stackinfo_st *s,elementtype *value)
;int
stack_is_full
(stackinfo_st *s)
;int
stack_is_empty
(stackinfo_st *s)
;/*入棧,0表示成,非0表示出錯*/
intstack_push
(stackinfo_st *s,elementtype value)
/*出棧*/
intstack_pop
(stackinfo_st *s,elementtype *value)
/*訪問棧頂元素*/
intstack_top
(stackinfo_st *s,elementtype *value)
/*判斷棧是否已滿,滿返回1,未滿返回0*/
intstack_is_full
(stackinfo_st *s)
/*判斷棧是否為空,空返回1,非空返回0*/
intstack_is_empty
(stackinfo_st *s)
intmain
(void
)/*訪問棧頂元素*/
int topval;
stack_top
(&stack,
&topval)
;printf
("top value %d\n"
,topval)
;/*出棧*/
int popval;
stack_pop
(&stack,
&popval)
;printf
("pop value %d\n"
,popval)
;int i =0;
while
(success ==
stack_push
(&stack,i)
)printf
("stack is full,topofstack is %d\n"
,stack.topofstack)
;return0;
}
如何使用乙個陣列實現乙個棧結構呢?
下文是筆者採用陣列實現棧結構的方法分享,如下所示 棧結構簡介 棧是乙個先入後出 filo firstinlastout 的有序列表。允許插入和刪除的一端,為變化的一端,稱為棧頂 top 另一端為固定的一端,稱為棧底 bottom 根據棧的定義可知,最先放入棧中元素在棧底,最後放入的元素在棧頂,而刪除...
資料結構 乙個陣列實現兩個棧
乙個陣列實現兩個棧有很多想法,我先寫一種比較簡單的,思路如下圖所示 如下 includeusing namespace std 乙個陣列實現兩個棧 template class arraystack void pusharray1 const t x else cout 該棧已滿 0 else co...
乙個陣列實現兩個棧 共享棧
問題分析 在順序棧的實現中,元素入棧是從下標為0的位置向上增長的,出棧是通過size 實現的。要想用乙個陣列實現2個棧,可以除了下標從0開始增長,還同時讓另乙個棧下標從size 1處開始減少。問題解決 定義top1,top2分別代表2個棧棧頂的下乙個位置的下標。棧1入棧時,元素放入top1位置,再使...