C 选择数据结构
根据需求使用不同的数据结构,但我如何知道应该使用哪种数据结构?我只是想知道如何选择合适的数据结构?谢谢您需要研究使用哪些数据结构来满足哪些需求(这里没有人会花时间为您详细说明每个选项,并告诉您确切的使用时间)C 选择数据结构,c,C,根据需求使用不同的数据结构,但我如何知道应该使用哪种数据结构?我只是想知道如何选择合适的数据结构?谢谢您需要研究使用哪些数据结构来满足哪些需求(这里没有人会花时间为您详细说明每个选项,并告诉您确切的使用时间) 一旦你知道了细节,你应该能够(相当确定地)根据你的需要选择合适的数据结构。如果不知道决策的哪些部分会给你带来麻烦,你很难回答 在大多数情况下,您需要最小、最简单的数据结构来保存需要存储的数据 有一个特殊的案例给您带来麻烦吗?< /P> < P>此流程图是C++中的STL,但您可以在C.中实
一旦你知道了细节,你应该能够(相当确定地)根据你的需要选择合适的数据结构。如果不知道决策的哪些部分会给你带来麻烦,你很难回答 在大多数情况下,您需要最小、最简单的数据结构来保存需要存储的数据
有一个特殊的案例给您带来麻烦吗?< /P> < P>此流程图是C++中的STL,但您可以在C.</P>中实现STL容器支持的任何数据结构。
- 列表是一个链接列表
- 向量是一个动态数组
- Deque类似于一个动态数组的列表——某种程度上可以分割差异
- Queue和Priority Queue就像他们说的那样(通常Queue是根据deque实现的,优先级Queue通常是根据向量或deque中的堆实现的)
- Set/Map/Multiset/Multimap都是使用某种形式的平衡二叉树实现的
2016年更新:显然,我用来链接到这里的图像已经被链接损坏,但在这个问题上,你可以看到几个相同的图像:不是你要找的,但它取决于你的需要 这取决于您存储的数据,访问这些数据的任何限制,您是否需要能够快速查找数据?它是否需要对数据进行任何排序?你以后会分类吗 即使您选择了一种数据结构(链表、地图、集合),其中也有许多变体可能会进一步推动您的决策 我的经验是:
尽可能使用最简单的方法,直到您知道您需要更复杂的东西。如果您关心的是快速高效的搜索,那么您将选择哪种数据结构来存储数据?给出理由来证明所选数据结构的合理性。对于不同类型的操作,每个数据结构都有不同的成本: 你应该问问自己:
(与直接数组相比,这些数组都会带来内存开销,因此我假设内存没有太大限制)这取决于您将解决什么问题。。。给我们更多的细节…你回答说,“根据需求使用不同的数据结构”。我不知道这个问题的简单答案。这是学习过程的一部分,也是成为一名程序员的必经之路。这也是让它变得有趣的原因之一。在一个问题中通常会用到不同的数据结构、模式、算法等。但是,要找到“最佳”的方法需要时间、设计、经验、团队合作和许多其他因素。像二叉树这样的东西很少是存储东西的最小和最简单的方法,但它通常是最有效的方法。嗯,我更多考虑的是数据结构本身,而不是算法。但这肯定是问题的一部分,当问题不完全清楚时。+1哈哈。这非常方便。但愿我能想到把它寄出去。@SoapBox:当无序的容器实际上是标准的时候,它很可能是标准的(虽然我不是作者,所以我不能说)。非常整洁它将有助于加速(与反对者)关于数据结构的讨论。你能确定来源吗?也许这幅插图中的矢量图会有帮助——可以进行更改/添加。@Abhi:我不知道具体的位置