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

来源:互联网 发布:优化旅客列车编组 编辑:程序博客网 时间:2024/06/05 02:53
发现自己对栈的理解一直都存在一些误区,一直将栈和链表捆绑在一起来理解
一开始认为栈的定义是这样的(来自数据结构教材):
tepydef  struct{
 elemtype *base;    // 在栈构造之前和销毁之后,base的值都是零
 elemtype *top;      // 栈顶指针
 int stacksize;       //  当前已经分配的存储空间,以元素为单位
}Sqstack;


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




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


这两种不同的栈的定义方式也导致他们所拥有的一些方法的不同
最明显是莫过于是进栈和出栈了
对于第一种的进栈  还需要用malloc()和realloc()函数在内存中开辟空间(这里也就体现了两种方法的一些利弊了,第一种采用的是动态存储,可以即时开辟和释放内存空间,而第二种运用的是数组,是静态的存储方式)
0 0
原创粉丝点击