/*
* 用顺序表实现栈的操作
*/
#include<stdio.h>
int stack[10]; //栈的定义
int top = -1; //栈顶指针(一个保存数组下标的变量)
typedef struct
{
char data[10];
int top;
}SeqStack;
int main()
{
void InitStack(SeqStack *s);
int Push(SeqStack *s, char x);
int Pop(SeqStack *s,char *x);
int GetTop(SeqStack *s,char *x);
int IsEmpty(SeqStack *s);
int Size(SeqStack *s);
SeqStack Seq; //实例化一个栈对象
SeqStack *s=&Seq; //定义一个指向栈地址的指针
char a;
char *e=&a;
InitStack(s); //对栈进行初始化
printf("栈%s\n",(IsEmpty(s)==1?"空":"不空"));
printf("a进栈\n");
Push(s,'a');
printf("b进栈\n");
Push(s,'b');
printf("c进栈\n");
Push(s,'c');
printf("d进栈\n");
Push(s,'d');
printf("栈%s\n",(IsEmpty(s)==1?"空":"不空"));
GetTop(s,e);
printf("栈顶元素:%c\n",a);
printf("出栈次序:\n");
while(!IsEmpty(s))
{
printf("栈中元素有%d个 ",Size(s));
Pop(s,e);
printf("%c\n",a);
}
printf("\n");
return 0;
}
void InitStack(SeqStack *s)//创建一个栈
{
s->top = -1;
}
int Push(SeqStack *s, char x)//进栈操作
{
if(s->top==9){//表示栈满
return 0;
}
else{
s->top++;
s->data[s->top]= x;
return 1;
}
}
int Pop(SeqStack *s,char *x) //出栈操作
{
if(s->top == -1){
return 0;
}
else{
*x = s->data[s->top];
s->top--;
return 1;
}
}
int GetTop(SeqStack *s,char *x) //取栈顶元素
{
if(s->top==-1)
return 0;
else
{
*x=s->data[s->top];
return 1;
}
}
int IsEmpty(SeqStack *s) //判断栈空
{
if(s->top==-1)
return 1;
else
return 0;
}
int Size(SeqStack *s)//返回栈中元素的个数
{
return s->top+1;
}
顺序栈的基本操作
猜你喜欢
转载自blog.csdn.net/zuiziyoudexiao/article/details/80424567
今日推荐
周排行