64,685
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
struct sequence
{
int MAXCOUNT; //最大个数
int top; //栈顶元素位置
int *elem; //
};
typedef struct sequence Seq;
//创建一个空栈,大小为max
Seq *createStack(int max){
Seq *seq;
seq = (Seq*)malloc(sizeof(Seq));
seq->MAXCOUNT = max;
seq->elem = (int*)malloc(max * sizeof(int));
seq->top=-1;
return seq;
}
//判断是否为空栈
int isEmpty(Seq *seq){
if(seq->top==-1)
return 0;
else
return 1;
}
//进栈
void push(Seq *seq, int m){
if(seq->top== seq->MAXCOUNT-1){
printf("overflow\n");
}else{
seq->top = seq->top + 1;
seq->elem[seq->top] = m;
}
}
//出栈
void pop(Seq *seq){
if(seq->top==-1){
printf("underflow\n");
}else{
seq->top = seq->top - 1;
}
}
//取栈顶元素
int gainTopEle(Seq *seq){
if(seq->top==-1){
printf("It is empty\n");
return NULL;
}
return (seq->elem[seq->top]);
}
void main(){
int max;
printf("请输入栈的大小:");
scanf("%d",&max);
Seq *seq = createStack(max);
printf("请输入栈的元素(-1 结束):\n");
/*
for(int i=0; i<max; i++){
int num;
scanf("%d ",&num);
push(seq, num);
}
*/
int num;
do{
scanf("%d ",&num);
if(num!=-1)
push(seq, num);
}while(num!=-1);
while(isEmpty(seq)!=0){
printf("%d ", gainTopEle(seq));
pop(seq);
}
printf("\n end \n");
}