C語言 實現棧(stack)

2021-09-11 00:18:06 字數 1039 閱讀 5097

1、什麼是棧

棧(stack)又名堆疊,它是一種運算受限的線性表。

其限制是僅允許在表的一端進行插入和刪除運算,這一端被稱為棧頂,把另一端稱為棧底

向乙個棧插入新元素稱作壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;

從乙個棧刪除元素稱作出棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。

棧的特點就是:先進後出(filo),或是後進先出(lifo)。

棧的結構可用下圖描述:

2、**實現棧

主要四個操作分別是:判空、判滿、壓棧、出棧。

**實現如下:

/*基於結構體----棧的實現

思路:top始終指向乙個待插入的位置

push操作:1.寫入資料 2.top++ 3.前提:棧非滿

pop操作: 1.top-- 2.彈出資料 3.前提:棧非空*/

#include typedef struct _stack

stack;

int isfull(stack *ps) //判滿

int isempty(stack *ps) //判空

void push(stack *ps,char ch) //壓棧

char pop(stack *ps) //出棧

int main()

, 0 }; //棧初始化

for (char ch = 'a'; ch <= 'z';ch++) }

while (!isempty(&s))

return 0;

}

棧(Stack)的C語言實現

棧 stack 實現的是乙個後進先出策略。元素彈出的順序正好和它們壓入的次序相反。s.top表示棧頂元素,s.size表示棧的大小。如果試圖對乙個s.top 0的棧進行彈出操作,則稱棧下溢。如果s.top超過了s.size,則稱棧上溢。這裡使用動態分配記憶體的方式實現棧,並可以動態的調整棧的大小,如...

C語言實現棧

下面程式分別實現了棧的順序儲存結構和棧的鏈式儲存結構的壓棧和彈棧操作,均在dev c 下執行通過。棧的順序儲存結構 include include include include include define ok 1 define error 0 define maxsize 10 typedef...

C語言實現棧

一 實現 vim stack c.c include stdio.h include stdlib.h 棧元素結構體 用來描述每個棧元素 struct list 棧結構體 棧頂元素指標,棧大小資訊 struct stack 棧初始化 struct stack stackinit void 入棧函式 ...