#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 30
typedef int DataType;
typedef struct
{
int top;
DataType stack[MAXSIZE];
}Stack;
void initStack(Stack *s)
{
s->top=-1;
}
int pushStack(Stack *s,DataType x)
{
if(s->top!=MAXSIZE-1)
{
s->stack[++s->top]=x;
return 1;
}
return 0;
}
DataType popStack(Stack *s)
{
DataType x;
if(s->top!=-1)
{
x=s->stack[s->top--];
return x;
}
return 0;
}
int main()
{
Stack *s1=(Stack*)malloc(sizeof(Stack));
initStack(s1);
printf("入栈,输入数字(空格隔开),回车结束:\n");
DataType num[MAXSIZE];
int j=0;
while(1)
{
scanf("%d",&num[j]);
pushStack(s1, num[j++]);
if(getchar()=='\n')break;
}
printf("出栈:\n");
while(s1->top>-1)
{
printf("%5d",popStack(s1));
}
return 0;
}
要点
- 结构体指针使用前要分配内存、初始化(通过构建的初始化函数初始化);
- 连续输入数字,回车结束;
- typedef struct{...}Stack; 的好处是:在之后用Stack时,以Stack代替struct{...};