C++实现顺序栈

这篇博客展示了如何使用C++实现一个顺序栈的数据结构,包括初始化、判断栈空、进栈、出栈、读取栈顶元素和显示栈内元素等功能。通过一个简单的用户交互界面,用户可以选择进行各种栈操作,例如输入元素、出栈、查看栈顶元素等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>
#include <cstdlib>
using namespace std;

#define MAXSIZE 50

//数据类型 
struct ElemType{
	int n;
};

//栈结点结构体 
typedef struct{
	ElemType data[MAXSIZE];
	int top;//栈顶 
}SqStack;

class Sq_Stack{
public: 
	//初始化 
	Sq_Stack(){
		cout<<"初始化栈"<<endl;
		S.top = -1; //初始化栈顶为-1	 
	}
	//判断栈空
	bool IsEmpty(){
		if(S.top==-1)
			return true;
		else
			return false;
	} 
	//进栈
	bool Push(ElemType e){
		//判断是否栈满
		if(S.top==MAXSIZE-1)
			return false;
		//插入元素 
		S.data[++S.top]=e;
		return true; 
	} 
	//出栈
	bool Pop(ElemType &e){
		//判断是否为栈空
		if(S.top==-1)
			return false;
		//取栈顶 
		e=S.data[S.top--];
		return true; 
	} 
	//读取栈顶元素 
	bool GetTop(ElemType &e){
		//判断是否为栈空
		if(S.top==-1)
			return false;
		//取栈顶 
		e=S.data[S.top];
		return true; 
	}
	//输出栈的元素
	void Show(){
		for(int i=S.top;i>=0;i--){
			cout<<"                         |"<<S.data[i].n<<"|"<<endl;
		}
		cout<<endl;
	} 
	//功能选择
	void Choice(int c){
		ElemType e;
		switch(c){
			case 1:
				cout<<"请输入元素的值"<<endl;
				cin>>e.n; 
				Push(e);
				break;
			case 2:
				cout<<"出栈"<<endl;
				Pop(e);
				cout<<"出栈元素为"<<e.n<<endl;
				break;
			case 3:
				cout<<"读取栈顶元素"<<endl;
				GetTop(e);
				cout<<"栈顶元素为"<<e.n<<endl;
				break;
			case 4:
				if(IsEmpty()){
					cout<<"栈空"<<endl;
				}
				else{
					cout<<"栈非空"<<endl;
				}
				break;
			case 0:
				cout<<"退出程序";
				exit(0);
			default:
				cout<<"输出格式错误"<<endl;
				break; 
		}
		Show();
	}
private:
	SqStack S;
};
void Welcome(){
	cout<<"======功能选择======"<<endl;
	cout<<"1->入栈"<<endl;
	cout<<"2->出栈"<<endl;
	cout<<"3->读取栈顶元素"<<endl;
	cout<<"4->判断栈是否空"<<endl;
	cout<<"0->退出程序"<<endl;
}
int main()
{
	Sq_Stack s;
	Welcome();
	int c;
	while(true){
		cout<<"请输入操作"<<endl<<">>";
		cin>>c;
		s.Choice(c);
	}
	return 0;	
} 

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Who_Am_I.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值