我一直以为队列的“头”是要读取的下一个元素,从来没有真正质疑过这种用法。因此,我写的一个用于维护队列的链接列表库使该术语变得更加合理:我们有一个list1_head
宏可以检索第一个元素;在队列中使用此库时,这将是第一个要删除的元素。
但是团队中的一位新开发人员习惯于以其他方式实现队列。他将队列描述为像狗一样行为:您将其插入头部,然后将其移至尾部。这是一个足够聪明的描述,我觉得他的用法必须更广泛,而且我没有类似的令人回味的描述。
因此,我想有两个相关的问题:1,队列的“头”对您意味着什么?2,为什么我们用“头”一词来描述这个概念?
1
“他形容一个队列像一条狗一样”。
—
NoChance 2012年
我不知道,但是我会猜到您的实现,而不是狗狗。
—
Izkata 2012年
关于QUEUE和STACK之间差异的另一个很好的解释:http : //pages.cs.wisc.edu/~mcw/cs367/lectures/stacks.html
—
//pages.cs.wisc.edu/~mcw/cs367/lectures/stacks.html
同样,在教科书中,通常在其他数据结构(例如堆栈和队列)之前先引入(单)链接列表,然后将它们建立在链接列表结构之上(这不一定是当今构建这些数据结构的首选方式,因为缓存未命中)。链表通常会有一个头指针(指第一个元素)和一个尾指针(指最后一个元素)。在这种安排下,很容易在尾端插入从头上移出的-因此,在这种FIFO队列中,您是从头上移出的。但是请注意,这实际上是内部实现细节。
—
FilipMilovanović
顺便说一句,确实认为这部分是与语言有关的事情,但这也与我们如何概念化队列的工作有关。对于大多数了解“队列”一词的含义的人,或者对于具有这种隐喻(排队等候)的人而言,出口部分位于前/头。我怀疑您的朋友将它的概念更像是一种管道,将对象推入管道的一端(在某种意义上说是“起点”,或者说是“头”),然后在另一端退出。
—
FilipMilovanović18年