棧的c程式碼實現
阿新 • • 發佈:2019-01-01
c比較接近作業系統底層,也比較好理解,所以就用c語言實現了
首先定義一個頭檔案,關於棧的定義,比如壓棧,彈棧,清空棧鄧基本操作
#include<stdio.h>
#include<stdbool.h>
#define maxsize 10
struct stack
{
int data[maxsize];
int top;
};
typedef struct stack Stack;
void stack_init(Stack *st){
st->top=-1;
}
Stack push(Stack *st,int s){
if(st->top==maxsize-1)
printf("棧滿");
else
{
st->top++;
st->data[st->top]=s;
}
}
int pop(Stack *st){
int s;
if(st->top==-1)
printf("棧空");
else
s=st->data[st->top];
st->top--;
return s;
}
void destroy(Stack *st)
{
st->top=-1;
}
棧這個結構體只需要一個儲存棧的陣列以及棧頂指標
前提是棧沒滿的時候,壓棧操作就是使棧頂指標所指向的陣列元素的值為壓入的數,棧的元素的數量top加1
退棧,若棧不是空的,那麼直接從棧的棧頂彈出一個數,棧的元素數量top減1
清空棧,即使得棧頂的元素的值為-1,從這個例子中可以看出,棧可以使用陣列實現,當然也可以使用連結串列實現,不過使用連結串列,那麼申請記憶體以及
棧元素是遍歷以及搜尋變的很麻煩
還可以看出一個道理,那就是當棧清空以後,棧裡面的內容如果不進行清除的話,內容還是會存在的