永发信息网

求栈中元素个数(StackLength)的两个算法那个正确?

答案:2  悬赏:0  手机版
解决时间 2021-03-31 07:22
  • 提问者网友:树红树绿
  • 2021-03-31 04:17
求栈中元素个数(StackLength)的两个算法那个正确?
最佳答案
  • 五星知识达人网友:一袍清酒付
  • 2021-03-31 05:24
这只是一个伪代码,就算法思想考虑都是正确的。
第一个逐一判断是否到底,否则累加1。
第二个直接用栈顶位置减去栈底位置。
前者要求内存空间连续,后者要求存放位置连续(比如数组下标)追问前者要求内存空间连续,后者要求存放位置连续(比如数组下标)....这个意思很奇怪,我写的栈是顺序存储的,存放在内存空间的位置连续追答比如开新的栈空间的时候,又额外开辟了其它变量x的空间,这时候栈内元素的地址就不连续了,p--后就可以跑到x的地址上。
不过理解成伪代码我们可以认为它的p--就是到下一个元素的地址。
如果用容器vector里的stack就没有这个问题了。

看见了楼上的回复。
通常是用第一种方式的。因为栈通常都是指针操作,数组操作局限性太大学到后面就几乎不用了。动态链表实现时通常不会额外记录栈顶或栈底元素的地址。比较之下前者更好,后者更好写
全部回答
  • 1楼网友:从此江山别
  • 2021-03-31 06:13
感觉都正确,这两个没有什么区别啊。追问第二个算法是我自己写的,网上找打的居然都是第一个算法.....为什么?最优算法是?追答这两个没有什么本质的区别,
就像一般的一维数组,告诉两个下标,让计算两者之间的元素个数,
方法1,就是直接拿下标相加减
方法2,就是让大的下标递减直到小的下标。
原理就是这个原理,这两个之间那个最好,我说不清楚,因为第二个里面牵涉到一系列的转换,这种转换我们是看不到的,当然第一个里面也有。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯