对数据结构中栈的一些理解

发现自己对栈的理解一直都存在一些误区,一直将栈和链表捆绑在一起来理解
一开始认为栈的定义是这样的(来自数据结构教材):
tepydef  struct{
 elemtype *base;    // 在栈构造之前和销毁之后,base的值都是零
 elemtype *top;      // 栈顶指针
 int stacksize;       //  当前已经分配的存储空间,以元素为单位
}Sqstack;


后来在学习表达式求值算法的时候,发现了栈的另外一种定义方法
tepydef struct{
 elemtype data[maxsize];
 int top;
 }Sqstack;
这是一种顺序栈,用于指示栈顶的当前位置的top是整型,它的实质是栈顶元素在数组中的下标。




对于栈的应用在上一篇的文章中就已经表明了:对于存在LIFO类型的问题,运用栈的思想都可以予以解决或者帮助
而这里存在的两种栈的定义方式,前一种明显复杂但是基本适合所以这一类的问题
而后一种是顺序栈   我想在某些特定的问题下可以发挥更大的用处


这两种不同的栈的定义方式也导致他们所拥有的一些方法的不同
最明显是莫过于是进栈和出栈了
对于第一种的进栈  还需要用malloc()和realloc()函数在内存中开辟空间(这里也就体现了两种方法的一些利弊了,第一种采用的是动态存储,可以即时开辟和释放内存空间,而第二种运用的是数组,是静态的存储方式)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值