#include<iostream>
using namespace std;
const int N=100;
int stack[N];
int sp;
void CreatStack() //建立stack
{
sp=-1; //將sp指於最底部
}
bool IsStackEmpty() //檢查是否為空
{
return (sp==-1); //如果sp在最底部則回傳真,否則假
}
bool IsStackFull() //檢查stack是否為滿的
{
return (sp==(N-1)); //如果sp是在最頂部回傳真.否則假
}
void StackOverflow()
{
cout<<"StackOverflow"<<endl;
}
void StackUnderflow()
{
cout<<"StackUnderflow"<<endl;
}
void Error()
{
cout<<"Error!!"<<endl;
}
void AddStack(int item) //加資料到stack裡
{
if(IsStackFull())StackOverflow(); //如果stack是滿的還想要加資料的話則說overflow
stack[++sp] = item; //先將指標往下一位,並將資料加入指標所指的位子
}
int DeleteStack() //刪掉資料並回傳,也就是pop
{
if(IsStackEmpty())StackUnderflow(); //如果stack明明是空的還想要砍(pop)資料,則說他underflow
else return stack[sp--]; //回傳被砍的資料,並將指標指向上一位
}
int StackTop()
{
if(IsStackEmpty())StackUnderflow(); //如果stack是空的則回傳underflow,因為根本沒資料啊!
else return stack[sp];//有資料的話則回傳最頂端的那個資料
}
int get(int i) //直接拿第i個資料
{
if(i>sp+1)Error();//若想拿取超過資料總數的位子的資料則發生Error
else return stack[sp-i+1]; //否則回傳遞i個位子的資料
}
void change(int i,int x) //將第i個位子的資料做更動
{
if(i>sp+1)Error(); //若想更動超過資料總數的位子資料則發生Error
else stack[sp-i+1]=x; //否則把第i個位子的資料更動為x
}
void main()
{
CreatStack(); //建立堆疊
AddStack(2); //加入資料
AddStack(3);
AddStack(3);
AddStack(14);
AddStack(23);
AddStack(34);
AddStack(22);
//cout<<IsStackFull()<<endl;
cout<<sp<<endl;
get(23);
//change(2,20);
cout<<stack[5]<<endl;
system("pause");
}
留言列表