堆栈推送方法

时间:2011-04-06 18:12:22

标签: c#

class Node
{
object data;
Node nextNode;

}

class stack
{
Node top;

public push()
{

Node aNewNode = new Node();
aNewNode.nextNode = top;
top = aNewNode;

}

}

任何人都可以告诉我们为什么分配top = aNewNode

8 个答案:

答案 0 :(得分:3)

因为堆栈中最后插入的节点成为第一个被检索的节点(LIFO) - 所以它是堆栈的新“顶部”。

它就像一堆卡片,你把卡片放在最上面 - 当你交易卡片时,你加入到顶部的最后一张卡片是你交易的第一张卡片。

答案 1 :(得分:1)

Beacuse堆栈是“后进先出”又称LIFO数据结构。

与小金属钉相似,您会看到食客收据。

答案 2 :(得分:0)

堆栈是一种后进先出结构。这意味着要向该堆栈添加新项目,请引用顶部项目,将其作为上一个顶部分配给新节点,然后将新节点设置为逻辑顶部。任何工作,例如枚举,添加或删除都始于头部。

答案 3 :(得分:0)

它是Stack的基本功能 - “Last IN,First OUT”。

您的堆栈顶部始终是插入的newNode。

答案 4 :(得分:0)

节点是堆栈中的元素,您的实现基于链表。

因此,要在堆栈上推送新元素,您需要创建一个新节点。然后是从新节点到上一个顶部的链接。 IE浏览器。新节点成为新的顶级。因此,分配,以便您可以跟踪顶部。

请注意,您发布的实现不需要跟踪堆栈的底部。但是,POP函数应通过检查调用应用程序是否尝试“弹出”结束null来检查这一点。

答案 5 :(得分:0)

因为堆栈是LIFO(后进先出)数据结构,所以当调用push()时,您正在创建一个新节点,它将位于顶部,因为它应该是第一个删除的节点,如果你是调用pop()。在推送时,您可以将当前顶级对象链接到新节点的nextNode属性,并将堆栈的top属性设置为新节点。

答案 6 :(得分:0)

您有一个现有的堆栈(在此处实现为链接列表),它是:     B - > C - > D - > Ë 其中B位于顶部,B的nextNode是C,依此类推。

当你把东西推到堆栈上时,它就变成了新的“顶层”。所以你必须做两件事:1)使堆栈的现有顶部成为堆栈新顶部的nextNode,以及2)设置堆栈顶部堆栈的想法以引用堆栈的新顶部

答案 7 :(得分:0)

因为如果您正在实现LIFO堆栈并使用单链接列表作为底层实现,那么将新节点添加到列表的开头是

  • 最简单的方法,并且这样做
  • 进行push()pop() O(1)操作。

否则,在堆栈中添加/删除项目需要遍历整个列表,进行push()pop() O(N)操作。或者您可以使用双向链表作为堆栈的基础数据存储区,代价是更多内存(每个节点2个指针,每个节点1个指针),并使push()和{{1的实现复杂化}}

但是,使用双向链表意味着,通过再添加2个方法,您可以从类中获得更多的多功能性:您可以使用相同的类作为堆栈,队列或某种组合。例如,Perl的数组被实现为链接列表,并提供pop()push操作,用于在数组末尾添加/删除项目,以及popshift操作对数组的开头做同样的事情。要将perl数组用作堆栈,请使用unshift / push;要将其用作队列,如果您愿意,可以使用pop / push(或shift / unshift。)

相关问题