请解释一下入栈运算和退栈运算,最好用举例子的方法,特别搞不懂栈顶指针的位置是怎么回事?

如题所述

栈(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
栈是一种数据结构,它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。
栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先堆进来的压在底下,随后一件一件往堆。取走时,只能从上面一件一件取。堆和取都在顶部进行,底部一般是不动的。
栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一堆称栈底。插入一般称为进栈(PUSH),删除则称为退栈(POP)。 栈也称为后进先出表(LIFO表)。

例如:有一个数列(23,45,3,7,3,945)
  我们先对其进行进栈操作,则进栈顺序为:23,45,3,7,3,945
  我们在对其进行出栈操作,则出栈顺序为:945,3,7,3,45,23

  进栈出栈就像只有一个口的长筒,先把数据一个个放入筒内,而拿出的时候只有先拿走上边的,才能拿走下边的。追问

在退栈运算中,“首先将栈顶元素赋予一个指定的变量,然后将栈顶指针退1”,那么退栈过程中指针如何变化呢,这个我搞不懂?

追答

栈是一种特殊的线性表,是一种只允许在表的一端进行插入或删除操作的线性表。表中允许进行插入、删除操作的一端称为栈顶。表的另一端称为栈底。栈顶的当前位置是动态的,对栈顶当前位置的标记称为栈顶指针。当栈中没有数据元素时,称之为空栈。栈的插入操作通常称为进栈或入栈,栈的删除操作通常称为退栈或出栈。

入栈运算
入栈运算是指在栈顶位置插入一个新元素。这个运算有两个基本操作:道德将栈顶指针进一(即top加1),然后将新元素插入到栈顶指针指向的位置。
当栈顶指针已经指向存储空间的最后一个位置时,说明栈空间已满,不可能再进行入栈操作。这种情况称为栈“上溢”错误。
退栈运算
退栈运算是指取出栈顶元素并赋给一个指定的变量。这个运算有两个基本操作:道德将栈顶元素(栈顶指针指向的元素)赋给一个指定的变量。然后将栈顶指针退一(即top减1)。
当栈顶指针为0时,说明栈空,不可能进行退栈操作。这种情况称为栈“下溢”错误码。
读栈顶元素
读栈顶元素是指将栈顶元素赋给一个指定的变量。必须注意,这个运算不删除栈顶元素,只是将的值赋给一个变量,因此,在这个运算中,栈顶指针不会改变。
当栈顶指针为0时,说明栈空,读不到栈顶元素。

温馨提示:内容为网友见解,仅供参考
无其他回答

栈的基本运算包括
入栈运算是指在栈顶位置插入一个新元素。首先将栈顶指针加一(即top加1),然后将新元素插入到栈顶指针指向的位置。当栈顶指针已经指向存储空间的最后一个位置时,说明栈空间已满,不可能再进行入栈操作。这种情况称为栈上溢错误。2、退栈运算 退栈是指取出栈顶元素并赋给一个指定的变量。首先将栈...

栈基本算法
1. 首先,检查栈顶元素(记为TOP)是否已满(即TOP大于等于栈的容量n)。如果满,会输出溢出信息并进行错误处理,不进行进栈操作。2. 如果栈未满,将TOP的值加1,表示栈顶指向下一位要插入的元素位置。3. 然后,将新进栈的元素(记为X)存入栈顶位置,即S(TOP)=X,进栈过程结束。退栈操作的...

退栈运算
栈的顺序存储空间为S(1:50),初始状态为top=0。经过一系列入栈与退栈运算后,top=20,则栈顶-栈底=20-0=20个元素。栈是向上增长的,每次压入一个元素,栈的TOP指针向上移动一位。当压入第一个元素时,TOP指针指向m+1-1 = m当压入第二个元素时,TOP指针指向m+1-2 = m-1。

栈能够进行哪些操作这些操作如何实
通常用指针top来指示栈顶的位置,用指针bottom指向栈底。往栈中插入一个元素称为入栈运算,从栈中删除一个元素(即删除栈顶元素)称为退栈运算。栈的顺序存储及其运算 与一般的线性表一样,在程序设计语言中,用一维数组S(1:m)作为栈的顺序存储空是,其中m为栈的最大容量。S(bottom)通常为栈底...

栈顶指针栈顶指针-相关介绍
栈是一种特殊的线性表,只允许在表的一端进行插入或删除操作。这个允许操作的一端被称为栈顶。另一端则称为栈底。栈顶的位置是动态变化的,其当前位置被标记为栈顶指针。当栈中没有数据元素时,我们称其为空栈。进行插入操作时,称为进栈或入栈,而进行删除操作时则被称为退栈或出栈。这一特性...

数据结构 入栈时是先改指针还是先放元素,出栈时是先移指针还是先取元素...
入栈时先放元素在该指针,出栈时先取元素后移指针。

栈的入栈和出栈的顺序规律是什么?
向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。任何出栈元素后面的元素必须满足两条规则 1、在原序列(也就是入栈序列)中顺序比出栈元素小的,...

栈顶指针的栈顶指针-相关介绍
是一种只允许在表的一端进行插入或删除操作的线性表。表中允许进行插入、删除操作的一端称为栈顶。表的另一端称为栈底。栈顶的当前位置是动态的,对栈顶当前位置的标记称为栈顶指针。当栈中没有数据元素时,称之为空栈。栈的插入操作通常称为进栈或入栈,栈的删除操作通常称为退栈或出栈。

入栈和出栈的顺序规律是什么?
②置TOP=TOP+1(栈指针加1,指向进栈地址);③S(TOP)=X,结束(X为新进栈的元素);出栈的顺序规律是排在前面的先出,排在后面的后出。①若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作②);②X=S(TOP),(退栈后的元素赋给X):③TOP=TOP-...

基本运算栈的定义及基本运算
顺序栈是其中一种实现方式,它使用向量存储,栈底固定,栈顶由top指针指示。顺序栈的基本操作包括进栈、退栈、判栈空和满等,需要注意避免空间溢出的情况。如果需要在程序中共享存储空间,可以考虑将两个栈的栈底设置在向量两端,一个栈满时可以占用另一个栈的空间,从而减少上溢的可能性。另一种存储...

相似回答