在本篇文章中,作者將與大家一起來了解資料結構中的鏈棧,以及它的一些相關操作。
鏈棧,顧名思義就是使用線性連結串列去實現一個棧,所以鏈棧的實現原理其實與我們之前學習的線性連結串列的實現是極其相似的。
在之前學習的線性連結串列中,我們已經學習瞭如何插入或者刪除一個元素,那麼鏈棧中的入棧和出棧操作其實就是增加了一個限定,限定只能在表頭新增或刪除元素。
接下來,我們就一起來看看如何用程式碼實現一個鏈棧以及它的相關操作:
一,初始化(構造空棧):
typedef struct Node
{
int data;
struct Node *next;
}stacknode, *linkstack;
typedef struct stack{
linkstack top;
}Linkstack;
bool InitStack(Linkstack *S)
{
S -> top = (linkstack)malloc(sizeof(stacknode));
S -> top = NULL;
return true;
}
二,入棧:
bool push(Linkstack *S, int e)
{
linkstack s = (linkstack)malloc(sizeof(stacknode));
s -> data = e;
s -> next = S -> top;
//新插入結點的next指標指向棧頂
S -> top = s;
//新結點s變成了棧頂
return true;
}
三,出棧:
bool pop(Linkstack *s, int *e)
{
linkstack p;
*e = s -> top -> data;//將棧頂元素賦值給e
p = s -> top;
//將棧頂指標給p
s -> top =p-> next;
//後移棧頂指標
free(p);
//釋放p結點
return true;
}
本篇文章到此就結束了,歡迎大家關注,評論,轉發。如果大家還希望瞭解其他方面的問題,也可以私信作者哦。