您的位置:首页 > 其它

顺序栈的基本运算

2013-07-29 11:02 351 查看
#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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: