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

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

设从键盘输入一整数的序列:a1,a2,a3,…,an,用栈结构存储输入的整数,当ai不等于-1时,将ai进栈;当ai=-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);
	}
}

完整代码: 

#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;
}

 

 

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年10月19日
下一篇 2023年10月19日

相关推荐