手撸栈

#include<stdio.h>
#include<stdlib.h>
#define init_size  20
#define increment  10
struct stack
{
int *top;
int *base;
int size;
};
void init_stack(stack &s)//创建栈 
{
s.base=(int*)malloc(init_size*sizeof(int));
s.top=s.base;
s.size=init_size;
}
void push(stack &s,int e)//进栈 
{
if(s.top-s.base>=s.size)
{
s.base=(int*)realloc(s.base,(s.size+increment)*sizeof(int));
s.top=s.base+s.size;
s.size+=increment;
}
*s.top=e;
s.top++;
}
int empty(stack s)//查看栈是否为空 
{
if(s.top==s.base)
return 1;
return 0;
}
void pop(stack &s,int &e)//出栈 
{
if(s.top==s.base)
return;
e=*(--s.top);
}
int stack_len(stack s)//查看栈当前容量 
{
return s.top-s.base;
}
void Destroy(stack &s)//销毁一个栈 
{
free(s.base);
s.base=s.top=NULL;
s.size=0;
}
int main()
{
stack s;
int e;
init_stack(&s);
push(s,0);
push(s,1);
while(!empty(s))
{
pop(s,e);
printf("%d,",e);
}
Destroy(s);
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长沙橘子猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值