链式栈的入栈和出栈问题,求各位大神指教

问题描述

入栈:StackNodepush(StackNodeS){S.next=top;top=S;returntop;}出栈:StackNodepop(){StackNodesn=top;top=top.next;returnsn;}其中的top=S和sn=top该怎么理解,虽然知道是指针的指向,但能不能写成S=top和top=sn?求各位大神指教

解决方案

解决方案二:
入栈的时候是在头部加入,top就是指向头部的句柄,用当前加入的对象句柄替换原来的top指向的对象句柄。出栈就反过来。看看数据结构的基础,这个理解起来很简单的。
解决方案三:
要先理解栈是怎样运行的,先进后出!
解决方案四:
引用1楼rumlee的回复:

入栈的时候是在头部加入,top就是指向头部的句柄,用当前加入的对象句柄替换原来的top指向的对象句柄。出栈就反过来。看看数据结构的基础,这个理解起来很简单的。

谢谢指导,但是能不能写成S=top和top=sn?
解决方案五:

解决方案六:

解决方案七:
引用3楼u014229748的回复:

Quote: 引用1楼rumlee的回复:
入栈的时候是在头部加入,top就是指向头部的句柄,用当前加入的对象句柄替换原来的top指向的对象句柄。出栈就反过来。看看数据结构的基础,这个理解起来很简单的。

谢谢指导,但是能不能写成S=top和top=sn?

不可以
解决方案八:
引用楼主u014229748的回复:

入栈:StackNodepush(StackNodeS){S.next=top;top=S;returntop;}出栈:StackNodepop(){StackNodesn=top;top=top.next;returnsn;}其中的top=S和sn=top该怎么理解,虽然知道是指针的指向,但能不能写成S=top和top=sn?求各位大神指教

S.next=top是入栈的过程,如果直接写成S=top,只是赋值而已。
解决方案九:
S.next=top;是将S放到top的前面,然后top=s,是将top指向s,方便以后固定的去找top,因为top是全局的,这两句顺序不能颠倒top=sn,sn哪里来的,这句编译都过不了
解决方案十:
8楼讲的有道理,学习了
解决方案十一:

解决方案十二:

解决方案十三:

解决方案十四:
1楼和8楼都是正解。。。。

时间: 2024-11-08 18:52:28

链式栈的入栈和出栈问题,求各位大神指教的相关文章

.NET CIL系列第二篇:入栈和出栈——CIL基于栈的本质

在上一篇.NET CIL第一篇:CIL介绍和入门中我们简要介绍了CIL编程的本质,和学习CIL编程的价值.还介绍了CIL的指令.特性和操作码.接下来的文字中会频繁出现:指令.特性.操作码这些关键字.所以请确定你已经知道它们的含义了. 入栈和出栈:CIL基于栈的本质 像C#这样的高级.NET语言,总是试图尽量隐藏底层的实现..NET开发一个不太为人注意的方面就是CIL实际上是一个完全以栈为基础的开发语言.回忆我们熟悉的System.Collections命名空间中的Stack类型的功能,它被用于压

php线性表的入栈与出栈实例分析

 本文实例讲述了php线性表的入栈与出栈用法.分享给大家供大家参考.具体如下:   1 2 3 4 5 <?php $stack = array("Simon", "Elaine"); //定义数组 array_push($stack, "Helen", "Peter"); //入栈 print_r($stack); ?>   1 2 3 4 5 <?php $stack = array("Simo

c++-关于C++的入栈和出栈操作

问题描述 关于C++的入栈和出栈操作 使用模板实现一个栈类,实现入栈和出栈操作,分别测试doubleintcharlongbool等类型 解决方案 http://wenku.baidu.com/link?url=FSCYEuOOM_QSZUMRDTi8NV8lyVP0G6pBXPzZ7SbH9ZLskbNUr6dHsX75CPgh1xH2pukZB40OozK9zSNHx4l1sGmesAOa6tAXGlDcLm2d21m 解决方案二: http://zhidao.baidu.com/link?

数据结构栈的出栈入栈的指针问题

问题描述 数据结构栈的出栈入栈的指针问题 入栈时,top指针是 s.top++=e 还是s.++top=e? 出栈时,top指针是 s.top--=e 还是s.--top=e? 还有就是 top指针是指向栈顶元素or栈顶元素下一位置? 解决方案 入栈操作需要先将top指针自增,然后新的top位置的值为入栈的值,先加后用,应该是s.++top=e; 出栈时先获取栈顶元素,然后将栈顶指针减一,所以是先用后减,即s.top--=e; 主要是++的位置,++top,在前先加后用:top++在后先用后加:

N个数依次入栈,出栈顺序有多少种?

对于每一个数来说,必须进栈一次.出栈一次.我们把进栈设为状态'1',出栈设为状态'0'.n个数的所有状态对应n个1和n个0组成的2n位二进制数.由于等待入栈的操作数按照1‥n的顺序排列.入栈的操作数b大于等于出栈的操作数a(a≤b),因此输出序列的总数目=由左而右扫描由n个1和n个0组成的2n位二进制数,1的累计数不小于0的累计数的方案种数. 在2n位二进制数中填入n个1的方案数为C(2n,n),不填1的其余n位自动填0.从中减去不符合要求(由左而右扫描,0的累计数大于1的累计数)的方案数即为所

谁能解释下&amp;amp;quot;递归的本质就是用压栈与出栈操作&amp;amp;quot;?

问题描述 谁能解释下"递归的本质就是用压栈与出栈操作"? 递归的本质就是用压栈与出栈操作 这句话感觉很有道理啊 解决方案 当递归调用时每次调用自己时可以看做是压栈过程,当递归条件满足结束时,递归一级一级的返回时可以看做是出栈的过程. 解决方案二: 函数调用的本质就是"压栈与出栈操作",递归不过是它的特例,自身调用自身. 解决方案三: 递归可以简单理解为一个大问题分为小问题,然后小问题继续分解,直到能解决,然后几个小问题解决,就是解决一个大问题,金字塔形状最后解决所有

创建单链表并利用栈将其逆置...小白求大神帮改一下多谢。

问题描述 创建单链表并利用栈将其逆置...小白求大神帮改一下多谢. 建立单链表时输入链表数据(字符数据)以'#'号结束. #include #include #define M 20 typedef struct { char data[M]; int top; }SeqStack; typedef struct lnode { char data; struct lnode*next; }LNode,*LinkList; SeqStack*Init_SeqStack() { SeqStack*

页面显示-为什么页面上 显示不出jsp中label 里的文字 求大神指教

问题描述 为什么页面上 显示不出jsp中label 里的文字 求大神指教 为什么页面上 显示不出jsp中label 里的文字 求大神指教 解决方案 你要显示什么东西?把代码贴出来 解决方案二: 你这是表格还是div的?如果是表格的话应该就没有这问题吧.div的话可能被覆盖了.div的话可以这样试试: 密码 相关文章 java web-.jsp页面中如何把文字写在图片上想要的位置? jsp-在一个JSP页面显示显示两张表的数据,求大神求好心淫 帮帮我~~~~~~ java web-求大神指教关于J

求解决-按照例子不能正常输出,程序不知道那里出错误了,请大神们指出来,我好改正,请用c语言编写

问题描述 按照例子不能正常输出,程序不知道那里出错误了,请大神们指出来,我好改正,请用c语言编写 #include #include /**本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素. 输入格式: 输入在第一行中给出一个正整数n(1≤n≤10).第二行输入n个整数,用空格分开. 输出格式: 在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格. 输入样例: 4 10 8 1 2 输出样例: 2 1 8 10 **