当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《数据结构:在此类练习中解释pop,push,dequeue,enqueue》经验,为你挑选了1个好方法。

我正试图让这些4个概念变得更加舒适.

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

我们有像

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

pop()会删除第一个数字,即15,对吗?如果它是pop(20)怎么办?

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

像pop和push一样排队和出队工作吗?

(然后将入队(40)在后面加40?什么会出队(100)呢?)



1> code_dredd..:

pop()会删除第一个数字,即15,对吗?如果它是pop(20)怎么办?

如果您将操作与特定数据结构相关联,我认为理解这些概念会更容易.

例如,操作喜欢push(item)pop()意为一个堆叠而像操作enqueue(item)dequeue()意为一个队列,两者都具有特定的和明确定义的行为.

堆栈只能与顶部的物品一起使用,就像一堆薄煎饼,纸张或任何其他物品放在一起.

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

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

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

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

由于堆栈的定义行为,操作就像pop(item)没有意义:它不再局限于堆栈顶部的项目.

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

这是不正确的,或者至少是模棱两可的:你认为"最后"元素在哪里?"最后"对你意味着什么?这里的问题是像"第一"和"最后"这样的术语意味着秩序,这是队列的意思(见下文).但是,堆栈在这个意义上不是有序集合,所以说到堆栈上下文中的第一个/最后一个元素没有多大意义.

在堆栈操作(如pushing和poping)方面,您应该始终谈论堆栈的顶部底部.

像pop和push一样排队和出队工作吗?

否.操作类似于enqueuedequeue称为队列的不同数据结构.队列与堆栈的行为方式和支持的操作不同.

例如,虽然堆栈总是在顶部添加或删除元素,但队列总是enqueue在集合的后面添加(即)项目,并dequeue以先入先出(FIFO)顺序删除(即)前面的元素.

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

如果您根据商店中的行来考虑队列的行为,那么将结构的正确行为关联起来会更容易.每次你在商店排队时,你都在排队.

然后会排队(40)在后面添加40?

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

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

什么会出列(100)呢?

这类似于我描述的问题pop:它没有意义,因为dequeue它意味着总是删除前面的元素.因此,队列只会支持dequeue(),它会自动删除"行"前面的任何内容:

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

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有