陣列實現乙個棧結構

2021-10-01 21:10:03 字數 1591 閱讀 1269

在這裡插入**片

#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位置,再使...