栈之顺序栈

目录

  1. 顺序栈的简介
  2. 举例以及详细分析
  3. 代码块
  4. 测试结果

顺序栈的简介

在顺序栈中有”上溢”和”下溢”的概念。顺序栈好比一个盒子,我们在里头放了一叠书,当我们要用书的话只能从第一本开始拿(你会把盒子翻过来吗?真聪明^^),那么当我们把书本放到这个栈中超过盒子的顶部时就放不下了(叠上去的不算,哼哼),这时就是”上溢”,”上溢”也就是栈顶指针指出栈的外面,显然是出错了。反之,当栈中已没有书时,我们再去拿,看看没书,把盒子拎起来看看盒底,还是没有,这就是”下溢”。”下溢”本身可以表示栈为空栈,因此可以用它来作为控制转移的条件。


举例以及详细分析

栈是仅限定在表尾进行插入和删除操作的线性表,共定义了九种栈的基本操作:分别是构造 销毁 清空 栈长 栈顶 插入 删除 遍历。

在下面压栈代码中,会用到realloc函数:void * realloc ( void * ptr, size_t new_size );
就是在原有内存上再申请一块内存!
关于realloc的行为方式,结合源码总结为:
1. realloc失败的时候,返回NULL;

  1. realloc失败的时候,原来的内存不改变,也就是不free或不move,(这个地方很容易出错);

  2. 假如原来的内存后面还有足够多剩余内存的话,realloc的内存=原来的内存+剩余内存,realloc还是返回原来内存的地址; 假如原来的内存后面没有足够多剩余内存的话,realloc将申请新的内存,然后把原来的内存数据拷贝到新内存里,原来的内存将被free掉,realloc返回新内存的地址;

  3. 如果size为0,效果等同于free();

  4. 传递给realloc的指针可以为空,等同于malloc;

  5. 传递给realloc的指针必须是先前通过malloc(), calloc(), 或realloc()分配的。


代码块

#include <stdio.h>  
#include<stdlib.h>
#include <malloc.h>
//int *p p只能是是地址 *p是值,指针是用来存储值的地址

typedef int SElemType;
typedef int Status;
#define INIT_SIZE 100  
#define STACKINCREMENT 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值