数据结构 栈
CaelusZhao
这个作者很懒,什么都没留下…
展开
-
顺序栈的出栈操作
转至:http://www.nowamagic.net/librarys/veda/detail/2275进栈是先自增再赋值,出栈则反过来。先把要出栈的元素获取到,然后再指针自减,把空间释放出来。函数设计如下:/* 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR */Status Pop(SqStack *S,SElemType *e){ if(转载 2016-12-30 17:18:28 · 1238 阅读 · 0 评论 -
获取顺序栈的栈顶元素
转至:http://www.nowamagic.net/librarys/veda/detail/2276获取顺序栈的栈顶元素 GetTop (S,*e):若栈存在且非空,用e返回S的栈顶元素。参考之前线性表的话,就是设一个存储栈顶的变量 e,然后通过地址传递,用 *e 来保存指针为 top 的数组元素。函数的设计如下:/* 若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERR转载 2017-01-02 20:43:34 · 16787 阅读 · 2 评论 -
栈的定义与大概理解
转至:http://www.nowamagic.net/librarys/veda/detail/2269栈是限定仅在表尾进行插入和删除操作的线性表。我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的找称为空栈。栈又称为后进先出(Last In First Out)的线性表,简称LIF0结构。理解桟的定义需要注意:首先它是一个线性表,也就是说,转载 2016-12-29 10:40:09 · 1395 阅读 · 0 评论 -
栈的抽象数据类型ADT
转至:http://www.nowamagic.net/librarys/veda/detail/2270对于栈来讲,理论上线性表的操作特性它都具备,可由于它的特殊性,所以针对它在操作上会有些变化。特别是插入和删除操作,我们改名为push和pop,英文直译的话是压和弹,更容易理解。你就把它当成是弹夹的子弹压入和弹出就好记忆了,我们一般叫进栈和出栈。栈的抽象数据类型ADT定义如下:ADT 栈转载 2016-12-29 10:46:00 · 4826 阅读 · 0 评论 -
顺序栈:栈的顺序存储结构
转至:http://www.nowamagic.net/librarys/veda/detail/2271既然栈是线性表的特例,那么栈的顺序存储其实也是线性表顺序存储的简化,我们将其简称为顺序栈。下标为0的一端作为栈底比较好,因为首元素都存在栈底,变化最小,所以让它作栈底。我们定义一个top变量来指示栈顶元素在数组中的位置,这top就如同中学物理学过的游标卡尺的游标,如上图所示,它可以转载 2016-12-29 11:00:30 · 2022 阅读 · 0 评论 -
顺序栈的进栈操作
转至:http://www.nowamagic.net/librarys/veda/detail/2272对于栈来说,最重要的操作之一就是进栈。如上图所示,进栈操作push大概分为两步。栈顶指针 S->top 先自增1,给需要进栈的元素腾出内存空间。再赋值。就是给对应的数组元素赋值:S->data[S->top]=e/* 插入元素e为新的栈顶元素 */Status转载 2016-12-30 11:19:04 · 1754 阅读 · 0 评论 -
链栈:栈的链式存储结构
转至:http://www.nowamagic.net/librarys/veda/detail/2290前面讲完了栈的顺序存储结构,我们现在来看看栈的链式存储结构,简称为链栈。链栈是没有附加头结点的运算受限的单链表。栈顶指针就是链表的头指针。单链表有头指针,而栈顶指针也是必须的,那干吗不让它俩合二为一呢,所以比较好的办法是把栈顶放在单链表的头部。另外,都已经有了栈顶在头部了,单链表中比较转载 2017-02-27 11:58:59 · 1106 阅读 · 0 评论