棧的鏈式儲存結構C++實現
阿新 • • 發佈:2019-01-03
棧的鏈式儲存結構被稱為鏈棧(linked stack)
鏈棧在本質上是簡化後的單鏈表,所有操作只集中在連結串列的一端,模擬棧的出棧和壓棧等操作。一般選擇單鏈表的頭部來作為棧頂比較方便。
/************************************************************************* > File Name: LinkStack.cpp > Author: Shorey > Mail: [email protected] > Created Time: 2015年03月23日 星期一 09時47分07秒 ************************************************************************/ #include<iostream> using namespace std; struct Node { int data; Node *next; }; class LinkStack { public: LinkStack() //建構函式 { top=NULL; } ~LinkStack(); //解構函式 void Push(int x); // 將x入棧 int Pop(); //彈出棧頂元素 int GetTop() //獲取棧頂元素,但不刪除 { if(top!=NULL) return top->data; } bool Empty() //判斷棧是否為空 { if(top==NULL)return 1; else return 0; } private: Node *top; }; LinkStack::~LinkStack() { Node *p; while(top!=NULL) { p=top; top=top->next; delete p; } } void LinkStack::Push(int x) { Node *s=new Node; s->data=x; s->next=top; top=s; } int LinkStack::Pop() { Node *p; int x; if(top==NULL)cout<<"stack is empty"<<endl; else { x=top->data; p=top; top=p->next; delete p; return x; } } int main() { LinkStack s; s.Push(5); s.Push(6); s.Push(9); cout<<s.GetTop()<<endl; cout<<s.Pop()<<endl; cout<<s.GetTop()<<endl; return 0; }