鏈棧顧名思義,採用鍊錶實現,其優點是不存在棧滿上溢位的情況,其操作都是在頭結點之後進行的,入棧類似與頭插法建立鍊錶。
注意頭結點與棧頂節點的區別,在沒有元素入棧時,棧僅有初始化的乙個頭結點,判斷其是否為空只需判斷s->next是否為null。
下面用c語言**實現了鏈棧的基本操作:
執行環境:vs2017
執行示例:
**:
#include#include//防止程式一閃而過
#includetypedef struct node linkstack;
/*建立空棧*/
void initstack(linkstack *&s)//*&為引用,可以直接修改實參指向的位置
/*判空操作*/
int empty(linkstack *s)
/*銷毀棧*/
void destroystack(linkstack *&s)
}/*入棧*/
void push(linkstack* &s, int x)//s為頭結點
/*出棧*/
int pop(linkstack *&s, int &ptr)//通過*ptr返回出棧的值,s為頭結點
else }
/*取棧頂元素*/
int gettop(linkstack *s,int &ptr)//與出棧差距在於不改變棧
ptr = s->next->data;
return 1;
}int main()
if (pop(top,y) == 1)
if (pop(top, y) == 1)
if (pop(top, y) == 1)
system("pause");
return 0;
}
C語言實現鏈棧
不多說,直接上 include include define max 100 define ok 1 define error 1 define stack size 100 typedef int elemtype 資料庫 elemtype data 5 elemtype number 鏈棧的節點...
c語言實現鏈棧
c語言 棧的鏈式表示與實現 採用順序儲存的棧也具有順序表類似的缺點 採用順序儲存的棧,即順序棧的儲存空間無法事先確定,如果棧空間分配過小,可能會造成溢位 如果棧空間分配過大,又容易造成儲存空間浪費,因此可以採用鏈式儲存結構表示棧 include includetypedef int elemtype...
C語言實現鏈棧
我自己寫的 部分 1 include2 include3 include 4 typedef struct node 5lstack,lpstack 910 void initstack lstack top 1116 17int push lstack top,char e 18 26 p nex...