设从键盘输入一整数的序列:a1,a2,a3,...,an,用栈结构存储输入的整数,当ai不等于-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈【数据结构】【栈】

这篇具有很好参考价值的文章主要介绍了设从键盘输入一整数的序列:a1,a2,a3,...,an,用栈结构存储输入的整数,当ai不等于-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈【数据结构】【栈】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

设计一个函数实现以下功能的函数,并测试。

设从键盘输入一整数的序列:a1,a2,a3,...,an,用栈结构存储输入的整数,当ai不等于-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。注意要应对异常情况(入栈满等)给出相应的信息。

输出结果: 

入栈和出栈的基本操作 描述 输入一个整数序列a1,a2,a3…,an。当ai不等于-1时将ai,数据结构,算法,c++ 


 文章来源地址https://www.toymoban.com/news/detail-745495.html

 主要算法:

//当ai不为-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈
void Yes_No(SqStack &S,int a) {
	if (a == -1) {
		int e{};
		Pop(S,e);
		cout <<e<<" ";
	}
	else {
		Push(S,a);
	}
}

完整代码: 

#include<iostream>
using namespace std;
//定义顺序栈
#define MAXSIZE 10
typedef struct
{
	char* base;
	char* top;
	int stacksize;
}SqStack;
//初始化
int InitStack(SqStack& S)
{
	S.base = new char[MAXSIZE];
	if (!S.base)
		return OVERFLOW;
	S.top = S.base;
	S.stacksize = MAXSIZE;
	return 1;
}
//入栈
int Push(SqStack& S, int &e)
{
	if (S.top - S.base == S.stacksize)
	{
		cout << "栈已满!";
		return 0;
	}

		*S.top++ = e;
		return 1;
}
//出栈
int Pop(SqStack& S, int &e)
{
	if (S.top == S.base)
	{
		cout << "栈为空!";
		return 0;
	} 
		e = *--S.top;
		return 1;
}
//当ai不为-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈
void Yes_No(SqStack &S,int a) {
	if (a == -1) {
		int e{};
		Pop(S,e);
		cout <<e<<" ";
	}
	else {
		Push(S,a);
	}
}
int main()
{
	SqStack S;
	InitStack(S);
	cout << "请输入一整数序列(以*结尾):";
	int a;
	while(cin>>a)
	{
		Yes_No(S,a);
	}
	cout << endl;
	cout << "栈中元素为:";
	while (S.top!=S.base)
	{
		int e{};
		Pop(S, e);
		cout << e;
	}
	return 0;
}

 

 

到了这里,关于设从键盘输入一整数的序列:a1,a2,a3,...,an,用栈结构存储输入的整数,当ai不等于-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈【数据结构】【栈】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包