close

 


#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");
}

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 野小孩 的頭像
    野小孩

    野小孩的部落格

    野小孩 發表在 痞客邦 留言(0) 人氣()