关于顺序栈的实现

来源:百度知道 编辑:UC知道 时间:2024/06/16 12:38:46
设从键盘输入一整数的序列:a1,a2,a3,……an,试编写算法实现:用栈结构存储输入的整数,当ai≠—1时,将ai进栈,当当ai≠—1时,将所有栈元素出栈。算法应对异常情况(如栈满等)给出相应的信息》

#include"stdio.h"
#include<iostream.h>
#include<malloc.h>
#include<string.h>
#define STACK_INIT_SIZE 200
struct Stack{
int *base;
int *top;
}sq;
void InitStack(Stack &s){
s.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
s.top=s.base;
};
void Push(Stack &s,int e){
*s.top=e;
s.top++;
};
int Pop(Stack &s){//设从键盘输入一整数的序列:a1,a2,a3,……an,
s.top--;
return *s.top;//试编写算法实现:用栈结构存储输入的整数,
};//当ai≠—1时,将ai进栈,当当ai≠—1时,将所有栈元素出
void main()//栈。算法应对异常情况(如栈满等)给出相应的信息》
{
Stack S1,S2;
InitStack(S1);
InitStack(S2);
int a[10];
int i=0,b;
while(i<10){
cout<<"请输入第"<<i<<"个元素"<<endl;
cin>>a[i];
if(a[i]==-1)
break;
Push(S1,a[i]);
i++;}

while(S1.top!=S1.base){
b=Pop(S1);
cout<<b<<endl;}
}