新手求助!顺序栈的一些问题!
这个程序出的问题是,输入一个元素的话,输出没有问题,但是如果输入2个或2个以上的元素话就会出现问题!各位帮忙看看#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxsize 100
typedef struct node
{
int top;
char data[maxsize];
}depositort;
//typedef struct node depositort;//depositor仓库
void initstack(depositort *s)
{
s->top=-1;
printf("仓库已清空!\n");
}
int empty(depositort *s)
{
if(s->top==0)
return 1;
else
return 0;
}
char push(depositort *s,char x)//入栈
{
if(s->top==maxsize-1)
{
printf("仓库已满\n");
return 0;
}
else
{
s->top++;
(s->data)[s->top]=x;
printf("插入成功!\n");
return 1;
}
}
char pop(depositort *s)//出栈
{
char x;
if(!empty(s))
{
printf("仓库中没有产品!\n");
x=NULL;
}
else
{
x=(s->data)[s->top];
s->top--;
printf("输出成功!\n");
}
return x;
}
void main()
{
depositort s;
int i,k=0;
char ch;
initstack(&s);
while((ch=getchar())!='\n')
{
push(&s,ch);
k++;
}
for(i=0;i<k;i++)
{
printf("%c",pop(&s));
}
printf("\n");
}
输出结果:
1.输入元素======>>a
仓库已清空!
a
插入成功!
输出成功!
a
Press any key to continue
2.输入元素======>>as
仓库已清空!
as
插入成功!
输出成功!
仓库中没有产品!
仓库中没有产品!
Press any key to continue