#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef int ElemType;
typedef struct node{
ElemType data[MAX_SIZE+1];
int top;
}*seqStack,stackNode;
//顺序栈的初始化
seqStack initSeqStack()
{
seqStack s=(seqStack)malloc(sizeof(struct node));
if(!s)
{
printf("动态内存分配失败!\n");
exit(0);
}
s->top=0;
printf("栈初始化成功!\n");
return s;
}
//入栈
int push(seqStack s,ElemType data)
{
if(s)
{
s->data[++s->top]=data;
return data;
}
return 0;
}
//出栈
int pop(seqStack s,ElemType *data)
{
if(s)
{
*data=s->data[s->top--];
return 1;
}
return 0;
}
//判断栈是否为空
int isEmpty(seqStack s)
{
if(s->top==0)
return 1;
return 0;
}
//判断栈满
int isFull(seqStack s)
{
if(s->top==MAX_SIZE)
return 1;
return 0;
}
//获取栈顶元素
int getTop(seqStack s)
{
if(!isEmpty(s))
{
return s->data[s->top];
}
return -1;
}
int main()
{
seqStack s=initSeqStack();
if(isEmpty(s))
{
printf("当前栈为空\n");
}
int n,a[100],i,t,elemT;
printf("请输入数字n\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
push(s,a[i]);
elemT=getTop(s);
/* if(elemT!=-1)
{
printf("当前栈顶元素为%d\n",elemT);
}*/
}
if(isFull(s))
{
printf("当前栈满\n");
}
while(s->top!=0)
{
pop(s,&t);
printf("%d ",t);
elemT=getTop(s);
/*f(elemT!=-1)
{
printf("当前栈顶元素为%d\n",elemT);
}*/
}
printf("\n");
if(isEmpty(s))
{
printf("当前栈为空\n");
}
return 0;
}
顺序栈基本操作实现(c语言)
最新推荐文章于 2023-03-21 19:59:08 发布