C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 什么是堆栈,队列,向量,数组和列表?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我被介绍给阵列.比列表.比矢量.比堆栈和队列.它们都可以包含某种类型的内存.但是为什么会有这么多呢?

我读到添加删除时列表更好,而在做其他事情时,矢量更好.但什么是堆栈和队列?那std :: array怎么样?

是否有任何优秀和善良的程序员能够(简单地或具体地)解释差异,优点,缺点以及何时使用这些不同的容器?

解决方法

这些是您正在谈论的不同数据结构.那我们为什么要使用不同的呢?这样做的原因是不同的数据结构在不同的东西上都很好.

数据结构因其元素之间的关系以及可以对数据结构执行的操作而不同.

对不同数据结构的不同操作可能具有不同的复杂性.复杂性是衡量操作数量随着数据量的增加而增长的程度.

由于您的问题是关于C,我将讨论2个数据结构:向量和列表.
还有一个顺序容器–deque,类似于矢量,主要区别在于在前面插入元素等操作要快得多.

向量

这是一个非常有用的数据结构,它是一个自动增长的数组.由于数组存储在连续的内存块中,因此某些操作的计算密集程度低于其他操作.

让我们看看我们可以对向量进行的操作.

元素访问

由于所有元素都在连续的内存块中,因此获取第n个元素是O(1).

添加到最后

如果我们剩下空间,并且我们知道向量的大小,则此操作为O(1).如果我们没有空间,我们需要分配更多空间,并将所有数据复制到新空间.这是O(n),但很少发生这种情况.

插入和删除

这涉及将插入位置之后的所有元素移动到右侧.这是O(n)

名单

该结构比矢量具有一些优点.元素不在连续的内存块中,这使插入操作更快.

元素访问

要到达第n个元素,您必须从头开始遍历每个列表节点,直到到达第n个元素.这个操作是O(n)

添加到最后

如果我们有一个指向最后一个元素的指针,则此操作为O(1).

插入和删除

包括找到插入的位置 – O(n)并修复指针.这似乎是相同的复杂性,但是向量必须复制元素,而列表只查找正确的位置.如果我们想在一开始就插入一个元素,就会看到很大的不同.一个列表,必须看不到任何东西,而一个向量必须移动几乎所有的元素.

堆栈和队列

这些是容器适配器.它们包装上面的容器,实现更强的关系,并添加新的操作.

这两者之间的区别在于堆栈是LIFO – 后进先出,而队列是FIFO – 先进先出.不同的算法使用不同的数据结构,因为可用的操作更快.

大佬总结

以上是大佬教程为你收集整理的c – 什么是堆栈,队列,向量,数组和列表?全部内容,希望文章能够帮你解决c – 什么是堆栈,队列,向量,数组和列表?所遇到的程序开发问题。

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

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