实现顺序栈的初始化、出栈、入栈,取栈顶、遍历栈操作

实现顺序栈的初始化、出栈、入栈,取栈顶、遍历栈操作

#include<iostream>
#define ok 1
#define error 0
#define MAXSIZE 100
using namespace std;

struct SqStack{
	int *base;
	int *top;
	int stacksize;
};

//初始化顺序栈 
int InitStack(SqStack &s){
	s.base = new int[MAXSIZE];
	//分配内存失败,退出 
	if(!s.base){
		return error;
	}
	//初始化 
	s.top = s.base;
	s.stacksize = MAXSIZE;
	return ok;
}

//入栈
int push(SqStack &s,int data){
	//栈满
	if(s.top - s.base == s.stacksize){
		return error;
	} 
	*s.top++ = data;
	return ok;
}

//出栈 , 出栈元素赋值给data 
int pop(SqStack &s,int &data){
	//空栈,退出
	if(s.base == s.top){
		return error;
	} 
	//将栈顶的值返回 
	data = *--s.top;
	return ok;
} 
//取栈顶元素
int getTop(SqStack s){
	if(s.top != s.base){
		return *--s.top;
	}
} 

//遍历栈
int print(SqStack s){
	if(s.base == s.top){
		return error;		
	}
	cout<<"从栈底往栈顶遍历:";
	while(s.base !=s.top){
		cout<<*s.base++<<" "; 
	}
	return 1;
} 

int main(){
	SqStack s;
	int num,data,outdata; 
	if(InitStack(s)){
		cout<<"分配内存成功\n";
	}else {
		cout<<"分配内存失败\n";
	}
	cout<<"输入入栈的数据个数: ";
	cin>>num;
	for(int i=0; i<num;i++){
		cin>>data;
		push(s,data);
	}
	print(s);
	cout<<"\n栈顶元素为:"<<getTop(s)<<endl;
	cout<<"执行出栈操作...\n";
	pop(s,outdata);
	cout<<"出栈的元素是:"<<outdata<<endl;
	cout<<"出栈结果:";
	print(s);
	return 0;
}

在这里插入图片描述

  • 9
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值