不仅用链表可以仿真堆栈,还可以用数组仿真堆栈。堆栈数组声明如下:
int stack[MaxSize];
int top=-1;
其中MaxSize是该堆栈的最大容量,top表示当前堆栈顶端的索引值,初始值设为-1表示堆栈为空。
数组仿真堆栈代码实现
#include<bits/stdc++.h>
#define MAXN 1000 //栈能容纳的最多元素个数
using namespace std;
int Stack [MAXN];
int top=-1; //初始化栈顶指针为-1
int pop() //栈顶元素出栈并获取出栈的元素值
{
int temp;
if(top<0)
{
cout<<"\nThe stack is empty!\n";
return -1;
}
temp=Stack[top--];
return temp;
}
void push(int value)
{
if(top>=MAXN)
cout<<"\nThe stack is full!\n";
else
Stack[++top]=value;
}
void display() //显示栈中元素
{
for(int tmp=top; tmp>=0; --tmp)
cout<<Stack[tmp]<<" ";
cout<<"\n";
}
int main()
{
int ins;
while(1)
{
cout<<"Please enter a value,(0=exit,-1=top)\n";
cin>>ins;
if(ins==0)
exit(0);
else if (ins!=-1)
push(ins);
else if(ins ==-1)
pop();
display();
}
return 0;
}