鏈棧的資料結構以及鏈棧的實現
阿新 • • 發佈:2019-01-27
線性表有順序儲存結構和鏈式儲存結構,棧屬於線性表的一種,也具有順序儲存結構和鏈式儲存結構。對於棧的鏈式儲存結構,一般稱之為鏈棧。
棧的插入和刪除只在棧頂進行操作,在單鏈表中,頭指標是單鏈表的必須元素;而在棧中,棧頂指標也是鏈棧的必須元素,且一般將棧頂放在單鏈表的頭部。
鏈棧的結構程式碼如下所示:
//定義資料結點型別
//typedef 定義結構類型別名
//LinkStaclPtr指向結構的指標
typedef struct Node{
int data;
Node *next;
} StackNode,*LinkStackPtr;
//定義鏈棧的結構型別
typedef struct LinkStack{
LinkStackPtr top;//棧頂指標
int count=0;
} LinkStack;
入棧操作:
int push(LinkStack *S,int element){
LinkStackPtr s=new Node;
s->data=element;
s->next=S->top;
S->top=s;
S->count++;
return element;
}
出棧操作:
int pop(LinkStack *S){
int temp;
LinkStackPtr p;
if (S->count<=0){
cout<<"棧空"<<" ";
}
temp=S->top->data;
p=S->top;
S->top=S->top->next;
delete p;
S->count--;
return temp;
}
測試程式碼如下:
int main()
{
LinkStack linkStack;
cout << "入棧10個元素" << endl;
for (auto i = 0; i < 10; i++)
{
std::cout << push(&linkStack, i) << " ";
}
cout << "\n";
cout << "---分隔符---" << endl;
cout << "出棧15個元素" << endl;
for (auto i = 0; i < 15; i++)
{
cout << pop(&linkStack) << " ";
}
cout << "\n";
return 0;
}
輸出如下:
歡迎關注公眾號,分享一些Unity3D、C#、C++資料結構和演算法的相關學習知識。