数据结构—顺序栈

目录

顺序栈


顺序栈

特点:先进后出

1、存储结构

#include<bits/stdc++.h>
using namespace std;
 
#define MAXSIZE 110  //顺序栈存储空间的初始分配量
#define OK 1    //成功标识
#define ERROR 0 //失败标识
 
typedef int Status;	//Status是函数的类型,其值是函数结果状态代码,如OK等
 
typedef struct
{
    int *base;
    int *top;
    int stacksize;
}Sqstack;

2、初始化

//初始化
Status init(Sqstack &s)
{
	s.base =new int[MAXSIZE];//为顺序栈分配空间
	if(!s.base ) exit(OVERFLOW);//存储失败 
	s.top =s.base ;//空栈
	s.stacksize = MAXSIZE;
	return OK;	 
} 

3、入栈

//入栈
Status Push(Sqstack &s,int e)
{
	if(s.top -s.base ==s.stacksize )//栈满 
		return ERROR;
	*s.top ++=e;//注意k++是先计算式子再加1,++k是先加1 
	//所以该语句是先将e入栈,然后改变栈顶指针 
	return OK; 
} 

4、出栈

//出栈 
Status Pop(Sqstack &s,int &e)
{
	if(s.top ==s.base )//栈空 
		return ERROR;
	e=*--s.top ;//注意k--是先计算式子再减1,--k是先减去1 
	//所以该语句是先改变栈顶指针 ,然后取值 
	return OK; 
} 

5、得到栈顶元素

//取栈顶元素
int Get(Sqstack s)
{
	if(s.top !=s.base )//栈非空 
		return *(s.top -1);//返回栈顶元素,栈顶指针不变 
		//理解s=i-1和s=i--的区别 
} 

6、输出栈中元素

Status Put(Sqstack s)
{
	int i=0;
	while(s.top-i !=s.base)
	{
		i++;
		cout<<(*(s.top -i))<<' ';//返回栈元素,栈顶指针不变 
	}
	return OK;	
}

7、主函数

int main()
{
	Sqstack s;
	init(s);
	int n,k,e[100];
	cout<<"请输入你要入栈元素个数:";
	cin>>n;
	cout<<"请输入你要入栈元素:";
	for(int i=0;i<n;i++)
	{
		cin>>e[i];
		Push(s,e[i]);
	}
	cout<<"请输入你要出栈元素个数:";
	cin>>n;
	for(int i=0;i<n;i++)
	{
		Pop(s,k);
	}
	cout<<"当前栈中元素:";
	Put(s);
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值