順序棧

棧:限定僅在表尾進行插入與刪除操作的線性表。又稱爲後進先出(LIFO)的線性表。


ADT Stack

{

數據對象:

D={a1|1≤in,n0,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


class Stack
{
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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章