和线性表的顺序存储很像,但是基本操作要简单的多
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
typedef struct sqstack
{
int data[MAX];
int top;//栈顶,表示数组的大小
}sqstack,*linklist;
void create_stack(linklist *l)//栈的建立
{
int i,j,x;
(*l)=(sqstack*)malloc(sizeof(sqstack));
printf("please input:");
scanf("%d",&j);
(*l)->top=j;
for(i=0;i<j;i++)
{
scanf("%d",&x);
(*l)->data[i]=x;
}
}
void print_stack(linklist *l)//栈的打印输出
{
int i;
for(i=0;i<(*l)->top;i++)
{
printf("%2d",(*l)->data[i]);
}
}
void push_stack(linklist *l)//进栈
{
if((*l)->top==MAX-1)
{
printf("it is full");
exit(-1);
}
int i,x;
printf("please input:");
scanf("%d",&x);
(*l)->data[(*l)->top]=x;
(*l)->top++;
}
void pop_stack(linklist *l)//出栈操作
{
int i,x;
x=(*l)->data[(*l)->top-1];
printf("%d\n",x);
(*l)->top--;
}
int main()
{
linklist a;
create_stack(&a);
push_stack(&a);
pop_stack(&a);
print_stack(&a);
return 0;
}