设计一个函数实现以下功能的函数,并测试。
设从键盘输入一整数的序列:a1,a2,a3,...,an,用栈结构存储输入的整数,当ai不等于-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。注意要应对异常情况(入栈满等)给出相应的信息。
输出结果:
文章来源地址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;
}
文章来源:https://www.toymoban.com/news/detail-745495.html
到了这里,关于设从键盘输入一整数的序列:a1,a2,a3,...,an,用栈结构存储输入的整数,当ai不等于-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈【数据结构】【栈】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!