C语言实现栈(push pop empty top destroy等)

栈是数据结构中很重要的一个结构,可以代替复杂的递归,所以他很重要~

这里主要讲的是如何实现,而是不是他用来做什么

栈是一个先进后出的结构,所以他只有一个口,这里即是插入的地方也是弹出的地方

f53bf5500d9e447488c67be0702fd6eb.png

 

 

下面我们来看一下他如何实现

首先我们看一下他的结构

206175958dfa4c32a304fb11b5c05196.png

他里面有一个datatype类型的指针,指向a,还有一个size和capacity

下面我们看一下他至少需要实现哪些函数

2d29adc2853e48a7a95a62dca6b70a5d.png 

我们暂时先实现这些函数

首先我们看一下初始化

eb44cb7ce2624750993870d092fa2a63.png 

我们初始化首先我们需要开辟一段空间用来存储数据,所以我们暂时把存储的数据量定为4个datatype类型,所以这里我们的size给成0,而这里的最大容量capacity成了4 因为这里现在最大可以存储4个数据

下面我们看一下push

 ab83a4db43954d7aac030eb2df0d4c21.png

其实这里并不难, 我们前面实现过顺序表,所以我们也是在插入的时候需要判断size是否和capacity相等,相等的话就扩容,扩容也是和顺序表一模一样的,这里有不懂的可以看一下顺序表。

下面我们在看一下pop

b462b880de334e92868933ce244999d8.png

我们在删除的时候,当然要从栈顶位置开始删除,所以我们这里需要判断一下栈是否为空empty,如果为空的话则不能删除,否则就可以删除,而这里的删除也只需要把size-- 就可以了。

下面我们看一下判断是否为空

9e40c6aa313b46cdb7e3085c5f6bb61e.png 

这个判断是否为空确实也特别简单,如果size为0就返回true反之则返回 false

这里使用了三目运算符

下面我们看一下size就是当前栈有多少数据元素,只需要返回size就可以了

b25cd33b997f4b66a1927283736c9133.png

 下面我们看一下top取栈顶元素

ae71cf1d6e99408f8c92e6573a6e6935.png

这个也挺简单的,如果为空则不能取

否则就返回size-1位置的元素

下面我们看一下销毁函数

d73bc9532756474a9a8ae15d9a7c3628.png 

这个如果a为空的话就不能销毁,否则就free掉a然后把capacity和size置为0即可

 

这个栈是很简单的,如果有不懂的可以看一下顺序表的实现,他们是特别相似的 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Naxx Crazy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值