数据结构:此类练习中 pop、push、dequeue、enqueue 的解释

2024-01-09

我正在努力熟悉这 4 个概念。

所以如果我们有一个数组{15, 34, 23, 32, 15, 5}

我们的业务包括

pop();
push(30);
enqueue(40);
dequeue(100);

pop() 只会删除第一个数字,即 15,对吧? 如果是 pop(20) 呢?

我假设 push(30) 会添加 30 作为最后一个数字。

入队和出队的工作方式与弹出和推送相同吗?

(那么 enqueue(40) 会在行尾添加 40 吗? dequeue(100) 会做什么?)


pop() 只会删除第一个数字,即 15,对吧?如果什么 这是流行音乐(20)?

我认为如果将操作与特定的数据结构联系起来,您会更容易理解这些概念。

例如,类似的操作push(item) and pop()是为了一个stack而像这样的操作enqueue(item) and dequeue()是为了一个queue,两者都有特定且明确定义的行为。

堆栈仅适用于位于top,就像一堆煎饼、纸张或任何其他相互叠放的物品集合。

这意味着您的{15, 34, 23, 32, 15, 5}数组可以这样查看:

| 15 |   <--- top
| 34 |
| 23 |
| 32 |
| 15 |
|  5 |
+----+

Here, pop只需删除顶部的元素,然后离开top指向紧接其下方的元素(即 34)。显然,使用push(8)会在堆栈顶部添加一个新元素(即 8),所以它现在看起来像这样:

|  8 |   <--- top
| 34 |
| 23 |
| 32 |
| 15 |
|  5 |
+----+

由于堆栈的定义行为,像这样的操作pop(item)没有意义:它将不再将自己限制在该项目上top堆栈的。

我假设 push(30) 会添加 30 作为最后一个数字。

这是不正确的,或者至少是不明确的:您认为“最后”元素在哪里? “最后”对你来说意味着什么?这里的问题是像“第一个”和“最后一个”这样的术语意味着顺序,这是queues是为了(见下文)。然而,stacks从这个意义上讲,它们不是有序集合,因此在堆栈上下文中谈论第一个/最后一个元素没有多大意义。

就堆栈操作而言,例如pushing and poping,你应该总是谈论top or the bottom堆栈的。

入队和出队的工作方式与弹出和推送相同吗?

不。类似的操作enqueue and dequeue用于不同的数据结构,称为queue。队列与堆栈的不同之处在于它们的行为方式和支持的操作。

例如,当一个堆栈always添加或删除顶部、队列的元素always添加(即enqueue)集合后面的项目并删除(即dequeue) 元素位于前面,按先进先出 (FIFO) 顺序。

 +-- front
 v
+--+----+----+----+----+---+
15 | 34 | 23 | 32 | 15 | 5 | 
+--+----+----+----+----+---+
                         ^
                         +-- back

如果您将队列的行为视为商店中的排队,那么将更容易关联该结构的正确行为。每次你在商店排队时,你都在排队。

那么 enqueue(40) 会在行尾添加 40 吗?

正确的。队列现在看起来像这样:

 +-- front
 v
+--+----+----+----+----+---+----+
15 | 34 | 23 | 32 | 15 | 5 | 40 |
+--+----+----+----+----+---+----+
                              ^
                              +-- back

dequeue(100) 会做什么?

这与我描述的问题类似pop: 这没有意义,因为dequeue是为了always删除前面的元素。因此,队列仅支持dequeue()它会自动删除“行”前面的所有内容:

 +-- front
 v
+--+----+----+----+----+---+
34 | 23 | 32 | 15 | 5 | 40 |
+--+----+----+----+----+---+
                         ^
                         +-- back
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构:此类练习中 pop、push、dequeue、enqueue 的解释 的相关文章

随机推荐