#include<stdio.h>
#include<stdlib.h>
#define M 20//先宏定义占中元素数量,以便后续 更改
typedef struct {
int *top;
int *base;
int size;
}sqstack;
int initstack(sqstack &s) {
s.base=(int *)malloc(M*sizeof(int));
if(!s.base)
return 0;
s.top=s.base;
s.size=M; //这里栈的空间大小可以随M的改变而改变
return 1;
}
int upstack(sqstack &s)
{
if(s.top-s.base==M)//s.top与s.base与M一样是int型指针
{
printf("栈中元素个数已满 ,不可以再加入!\n");
return -1;
}
else
{
printf("请输入元素,以99结束\n");
int x=1;
while(x!=99)
{
printf("s.top-s.base= %d --->",s.top-s.base);
scanf("%d",&x);
s.top++;
*s.top=x;//赋值的同时top指针也要自己往上加
}
printf("当前栈顶的第一个元素是:%d \n",*s.top);
}
return 0;
}
int pushstack(sqstack *s)
{
int b;
while(s->top!=s->base)
{
b=*s->top;
s->top--;
printf("s.top-s.base= %d --->",s->top-s->base);
printf("%d\n",b);
}
if(s->top!=s->base)
printf("栈空!\n");
return 0;
}
int desstack(sqstack &s)
{
s.base=s.top;
return 0;
}
// 主函数开始
int main()
{
sqstack p,q,r,d,t;
int num,a,b,temp,i,*e;
initstack(p);
q=p;
i= initstack(p);
//初始化栈与进出栈
if(i==1)
printf("栈初始化成功!\n\n");
else return 0;
upstack(p);
pushstack(&p);
printf("如果你想清空栈,请输入1\n");
scanf("%d",&a);
if(a==1)
desstack(p);
else
printf("栈中元素保留");
return 0;
}
二叉树进出数组栈
最新推荐文章于 2022-06-29 17:32:01 发布