從鍵盤輸入一批整數,然後按相反的次序打印出來(棧)
//從鍵盤輸入一批整數,然後按相反的次序打印出來
#include<stdio.h>
#define MAXSIZE 50
typedef int datatype;
typedef struct
{
datatype stack[MAXSIZE];
int top;
} seqstack;
seqstack *S,B;
void INITSTACK(seqstack *S)
{
S->top=-1;
printf("初始化成功\n");
}
int FULL(seqstack *S)
{
if(S->top>=MAXSIZE-1)
{
return 1;
}
else
return 0;
}
seqstack *PUSH(seqstack *S,datatype x)
{
if(FULL(S))
{
printf("棧滿~");
return 0;
}
else
{ S->top++;
S->stack[S->top]=x;
}
return (S);
}
int EMPTY(seqstack *S)
{
if(S->top<0)
{
printf("棧空");
return 1;
}
else
return 0;
}
int POP(seqstack *S)
{
datatype x;
if(EMPTY(S))
{
printf("棧空");
return 0;
}
else
{
x=S->stack[S->top];
S->top--;
return x;
}
}
main()
{ S=&B;//注意
seqstack *PUSH(seqstack *S,datatype x);
void INITSTACK(seqstack *S);
INITSTACK(&B);//注意
int x;
printf("請輸入以批整數以-1結束\n");
scanf("%d",&x);
while(x!=-1)
{
PUSH(S,x);
scanf("%d",&x);
}
while(S->top!=-1)
{
printf("%d",POP(S));
}
}