C语言 栈出入问题

2025-04-14 20:28:44
推荐回答(2个)
回答1:

//程序已经改正,可成功运行,希望kutpbpb的回答能对你有所帮助!
#include
#include
#define maxsize 7
#define FALSE -1
#define TRUE 1
#define OK 1
#define ERROR -1
typedef int datatype;
typedef struct node
{
datatype data[maxsize];
int top;
}seqstack;
void PUSH(seqstack *s,datatype x);
void SETNULL(seqstack *s);
int EMPTY(seqstack *s);
datatype POP(seqstack *s);
int main()
{
datatype e;
seqstack *p;
p=(seqstack*)malloc(sizeof(seqstack));
int i,x;
SETNULL(p);
printf("please enter the number:");
for(i=0;i {
scanf("%d",&x);
PUSH(p,x);
//printf("\nPlease print the pop value: %5d",p->top);
}
EMPTY(p);
e=POP(p);
printf("\nPlease print the pop value: %5d",e);
return 0;
}

void SETNULL(seqstack *s)
{
s->top=-1;
}
int EMPTY(seqstack *s)
{
if(s->top>=0)
return FALSE;
else
return TRUE;
}
void PUSH(seqstack *s,datatype x)
{
if(s->top==maxsize-1)
{
printf("overflow");
}
else
{
s->top++;
s->data[s->top]=x;
}
}
datatype POP(seqstack *s)
{
datatype e;
if(EMPTY(s)!=-1) //这里应该是不等号;
{
printf("underflow");
return NULL;
}
else
{
e=s->data[s->top];
s->top--; //这里应该是先保存,再减;
}
return e;
}百度地图

回答2:

修改如下:

#include
#include
#define maxsize 7
#define FALSE -1
#define TRUE 1
#define OK 1
#define ERROR -1
typedef int datatype;
typedef struct node
{
datatype data[maxsize];
int top;
}seqstack;
void PUSH(seqstack *s,datatype x);
seqstack *SETNULL(seqstack *s);
int EMPTY(seqstack *s);
datatype POP(seqstack *s);
int main()
{
seqstack *p;
int i,x;
datatype dat; /*注意这里*/
p=(seqstack*)malloc(sizeof(seqstack));

SETNULL(p);
printf("please enter the number:");
for(i=0;i!=maxsize-1;i++)
{
scanf("%d",&x);
PUSH(p,x);
printf("please enter the number:");
}
//EMPTY(p);/*注意这里,这一句似乎无必要*/
dat=POP(p);
printf("%d",dat);
return 0;
}

seqstack *SETNULL(seqstack *s)
{
s->top=-1;
return s;/*注意这里*/
}
int EMPTY(seqstack *s)
{
if(s->top>=0)
return FALSE;
else
return TRUE;
}
void PUSH(seqstack *s,datatype x)
{
if(s->top==maxsize-1)
{
printf("overflow");
// return NULL; /*注意这里*/
}
else
{
s->top++;
s->data[s->top]=x;
}
}
datatype POP(seqstack *s)
{
if(EMPTY(s)==TRUE)/*注意这里*/
{
printf("underflow");
return NULL;
}
else
{
s->top--;
return (s->data[s->top]);
}
}