C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 数据结构:在此类练习中解释pop,push,dequeue,enqueue大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_450_4@ 我正试图让这些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)呢?)

解决方法

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

例如,push(item)和pop()等操作适用于堆栈,而enqueue(item)和dequeue()等操作适用于队列,这两个队列都具有特定且定义明确的行为.

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

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

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

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

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

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

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

在推送和弹出等堆栈操作方面,你应该总是谈论堆栈的顶部或底部.

没有.像enqueue和dequeue这样的操作适用于称为队列的不同数据结构.队列与堆栈的行为方式和支持的操作不同.

例如,然堆栈总是在顶部添加删除元素,但队列总是在集合的后面添加(即入队)项目,并在先进先出(FIFO)中删除(即出列)前面的元素)订单.

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

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

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

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

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

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

大佬总结

以上是大佬教程为你收集整理的c – 数据结构:在此类练习中解释pop,push,dequeue,enqueue全部内容,希望文章能够帮你解决c – 数据结构:在此类练习中解释pop,push,dequeue,enqueue所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。