#define OK 1;
#define ERROR -1;
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 12;
typedef struct Data{
int data;
}Data;
//定义栈的结构
typedef struct Stack{
int *top;
int *base;
int stacksize;
}Stack;
//入栈
void Push(Stack &S,int n)
{
if(S.top-S.base==S.stacksize)
printf("栈满无法入栈");
else
{
*S.top=n;
*S.top++;
printf("入栈成功\n");
}
}
//栈初始化
int InitStack(Stack &S)
{
S.base=new int[99];
if(!S.base)
{return ERROR}
S.top=S.base;
S.stacksize=MAXSIZE;
return OK;
}
int main()
{
int n=0;
int e;
Stack s;
InitStack(s);
printf("请输入入栈操作:\n");
printf("进栈请输入除-1外的任意的数字\t 出栈请输入-1\n");
while((s.top-s.base)!=s.stacksize)
{
scanf("%d",&n);
if(n==-1) break;
else Push(s,n);
}
if(n==-1)
{
if(s.top==s.base) printf("栈空");
else
{
printf("栈顶元素是:%d\n",*--s.top);
while(s.top!=s.base)
printf("出栈顺序是:%d\n",*--s.top);
if(s.top==s.base)
{
printf("出栈结束");
}
}
}
}
设从键盘输入一整数的序列: a1, a2, a3, …, an,试编写算法实现:用栈结构存储 输入的整数,当 ai≠ -1 时,将 ai 进栈;当 ai=-1 时,输出栈顶整数并出栈。算法应对异常情
于 2023-12-28 20:23:24 首次发布