如何定义push()ing和pop()ping?

hel*_*hod 12 definition data-structures

我知道队列/链接列表的典型实现中的push()和pop()方法是如何工作的,但我真正想知道的是你实际定义为push还是pop?什么时候可以命名方法push()/ pop()?是什么使得insert()/ add()方法在典型的Tree实现中不是push()?

我的理解是,按()ING意味着把东西给一些特殊的指针指向的位置,和pop()ping一个元素是指将一些物体远一些指针指向,但它似乎并没有作出明确的规定.或者命名是否重要?

Jus*_*ier 37

在引用链接列表上的操作时,您可以将项目推送到列表以添加它们.然后,您可以从列表中弹出项目以将其删除.

如果从添加它们的列表的同一端弹出项目,则表示已实现堆栈或后进先出(LIFO)数据结构:

堆

如果您从对端弹出项目,那么您已经实现了一个队列 - 尽管通常术语是"入队"和"出队".这是先进先出(FIFO)数据结构:

队列

  • 哦,漂亮的照片,+ 1 :) (9认同)
  • 正如有人指出的那样......推送/弹出操作实际上通常应用于"堆栈"并不总是与"链接列表"完全相同,而链接列表可以为您提供队列或堆栈的基础,同样容易,在语义上,FIFO/LIFO标准就是你如何决定原始人的要求. (4认同)

Gre*_*att 8

术语push和pop通常用于堆栈,而不是队列链表.堆栈是后进先出(LIFO)数据结构; 换句话说,要删除的第一件事是最近添加的项目.推送是指将新项目放入堆栈时,弹出是指将其取下时.

许多编程语言允许您以任何方式编写代码,包括使用名称push和pop来表示任何和所有数据结构,即使这不是您真正正在做的事情.但是,我不推荐它.使用其他人使用的术语要好得多,以便其他程序员可以读取您的代码.此外,使用错误的术语可能会使工作变得困难,并且如果您正在处理项目(工作或开源),将难以与其他程序员进行通信.