顺序栈的表示和实现
顺序栈是指利用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置。通常习惯的做法是:以top=0表示空栈,鉴于C语言中数组的下标约定从0开始,则当以C语言作描述语言时,如此设定会带来很大不便,因此另设指针base指示栈底元素在顺序栈中的位置。当top和base的值相等时,表示空栈。
顺序栈中数据元素和栈元素之间的对应关系如下图所示
C++代码
#include<iostream>
#define MAXSIZE 5
using namespace std;
typedef struct
{
int *base;
int *top;
int stacksize;
}Sqstack;
bool initstack(Sqstack &s)
{
s.base = new int[MAXSIZE];//分配MAXSIZE大小的内存,并使base指向这段内存的基地址
if(!s.base)
return false;
s.top = s.base;
s.stacksize = MAXSIZE;
return true;
}
bool push(Sqstack &s)
{
int e;
if(s.top - s.base == s.stacksize)
return false;
for ( int i=0; i<MAXSIZE; i++ )
{
cin>>e;
*s.top = e;
*s.top++;
}
return true;
}
bool pop(Sqstack &s)
{
if(s.top == s.base)
return false;
for ( int i=0; i<MAXSIZE; i++ )
{
*s.top--;
cout<<*s.top<<endl;
}
return true;
}
int main()
{
Sqstack s;
cout<<"顺序栈即将存入的元素个数:"<<MAXSIZE<<endl;
initstack(s);
cout<<"元素依次进栈"<<endl;
push(s);
cout<<endl;
cout<<"元素依次出栈"<<endl;
pop(s);
}
结果
顺序栈即将存入的元素个数:5
元素依次进栈
1
3
5
7
9
元素依次出栈
9
7
5
3
1
--------------------------------
Process exited after 3.744 seconds with return value 0
请按任意键继续. . .
代码只是简单实现顺序栈的基本思想
有啥子问题欢迎评论留言,欢迎各位大佬的指导
转载需说明!