1. 程式人生 > >棧的c程式碼實現

棧的c程式碼實現

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,從這個例子中可以看出,棧可以使用陣列實現,當然也可以使用連結串列實現,不過使用連結串列,那麼申請記憶體以及

棧元素是遍歷以及搜尋變的很麻煩

還可以看出一個道理,那就是當棧清空以後,棧裡面的內容如果不進行清除的話,內容還是會存在的