棧:限定僅在表尾進行插入與刪除操作的線性表。又稱爲後進先出(LIFO)的線性表。
ADT Stack
{
數據對象:
D={a1|1≤i≤n,n≥0,ai爲T類型}
數據關係:
R={<ai,ai+1>|ai,ai+1∈D,i=1,···,n-1}
基本運算:
bool Push(T e) //進棧
bool Pop() //出棧
GetTop() //取棧頂元素
bool StackEmpty() //判斷棧是否爲空
}
代碼實現:
#include<iostream>
using namespace std;
#define MaxSize 100
{
private:
int top;
int *data;
public:
Stack();
~Stack(){delete[] data;}
bool Pop();
bool Push(int &e);
int GetTop();
};
Stack::Stack()
{
top=-1;
data=new int[MaxSize];
}
bool Stack::Pop()
{
if(top == -1)return false;
cout<<data[top--]<<endl;
return true;
}
bool Stack::Push(int &e)
{
if(top == MaxSize-1)return false;
data[++top]=e;
return true;
}
int Stack::GetTop()
{
if(top == -1)return -1;
return data[top];
}
int main()
{
Stack S;
while(1)
{
int k;
cin>>k;
switch(k)
{
case 1:{ system("cls");
int e;
cin>>e;
S.Push(e);
}break;
case 2:system("cls");S.Pop();break;
case 3:system("cls");cout<<S.GetTop();
}
}
return 0;
}