#include<stdio.h>
#include<stdlib.h>
#define maxsize 30
typedef struct
{
char data[maxsize];
int top;
}sqstack;
//初始化
void init_sqstack(sqstack **s)
{
*s=(sqstack*)malloc(sizeof(sqstack));
(*s)->top=-1;
}
//判断是否为空
int empty_sqstack(sqstack *s)
{
if(s->top=-1)
return 1;
else
return 0;
}
//入栈
void push_sqstack(sqstack *s,char x)
{
if(s->top==maxsize-1)
printf("栈已满!\n");
else
{
s->top++;
s->data[s->top]=x;
}
}
//出栈并返回给主调函数
void pop_sqstack(sqstack *s,char *x)
{
if(s->top==-1)
printf("栈是空的。\n");
else
{
*x=s->data[s->top];
s->top--;
}
}
//出栈
void top_sqstack(sqstack *s,char *x)
{
if(s->top==-1)
printf("栈是空的!\n");
else
*x=s->data[s->top];
}
void print(sqstack *s)
{
int i;
for(i=0;i<=s->top;i++)
printf("%4c",s->data[i]);
printf("\n");
}
void main()
{
sqstack *s;
char x,*y=&x;
init_sqstack(&s);
if(empty_sqstack(s))
printf("栈是空的。\n");
printf("*** 入栈 ***\n");
scanf("%c",&x);
while(x!='\n')
{
push_sqstack(s,x);
scanf("%c",&x);
}
printf("您创建的栈为:\n");
print(s);
pop_sqstack(s,y);
printf("栈顶元素为:%c\n",*y);
printf("出栈后顺序栈中的元素为:\n");
print(s);
top_sqstack(s,y);
printf("输出读出的栈顶元素为:%c\n",*y);
printf("输出当前栈元素为:\n");
print(s);
}
顺序栈的基本运算
最新推荐文章于 2022-05-16 17:41:17 发布