数据结构 用C语言实现顺序栈的入栈,出栈,判断栈空

顺序栈,遵循先进后出后进先出原则。我在写的时候,宏定义的
firstsize 为创建一个栈时这个栈的初始大小,这里为100。addsize
为当栈满时,再想入栈的话每次栈大小的增量,这里用10来代替。
create函数为创建栈函数。push为入栈函数。empty函数用来判断
栈是否为空,print函数用来出栈。
//以下为全部代码

#include "stdio.h"
#include "malloc.h"
#define firstsize 100
#define addsize 10
typedef struct{
 int *base;
 int *top;
 int size;
}Sq;
void create(Sq &s)
{
 s.base=(int*)malloc(firstsize*sizeof(int));
 if(s.base)printf("create OK!\n");
 s.top=s.base;
 s.size=firstsize;
}
void push(Sq &s,int e)
{
 if(s.top-s.base>=s.size)
 {
 s.base=(int*)realloc(s.base,(s.size+addsize)*sizeof(int));
 printf("栈内空间分配成功\n");
 }
 *s.top=e;
 s.top++;
 printf("元素[%d]已入栈!\n",e);
}
void print(Sq &s)
{
 if(empty(s))printf("抱歉,栈已满,无法出栈\n");
 else
 {
   s.top--;
   printf("出栈:[%d]\n",*s.top);
  }
}
int empty(Sq &s)
{
 if(s.top==s.base||s.top<s.base)
 { printf("栈空\n");
 return 1;}
 else {printf("栈未空\n");
 return 0;}
}
void main()
{
int i; Sq s;
do
{
printf("\n----------------\n1-");
printf("创建一个栈\n2-判断栈是否为空\n3-入栈\n4-出栈\n0-退出");
printf("\n----------------\n\n");
scanf("%d",&i);
switch(i)
{
 case 1:create(s);break;
 case 2:empty(s);break;
 case 3:
 {
 int e;
 printf("输入入栈元素:\n");
 scanf("%d",&e);
 push(s,e);
 }break;
 case 4:print(s);break;
 case 0:break;
 default:
 {printf("输入错误,请重新输入\n");
 }continue;
 }
 }while(i!=0);
 printf("程序已退出\n");
}


运行结果:sxz

  • 10
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值