我正在尝试使用 c/c++ 学习数据结构/链接列表,以开始软件编程的职业生涯......但是对于初学者来说,复杂性太大了。
我的问题是:
- 有没有一种简单的方法来学习数据结构/链接列表?
- C/C++真的适合学习数据结构吗?
- 在行业中,他们使用哪种语言来实现 DS?
虽然经常看到其他语言使用 C/C++ 进行数据结构和算法的低级实现,但这并不意味着这是了解它们的最简单方法。
您需要记住,当您谈论数据结构时,我们使用两个级别:
抽象数据类型(或- ADT(,它定义了数据结构的预期行为(或抽象API( - 它不依赖于实现。例如,最基本的 ADT 是列表。
- 某个 ADT 的实现 - 例如,链接列表是名为 List 的 ADT 的实现。它也可以用作队列和堆栈的实现。数组也是如此 - 它可以实现上述所有内容,并且可以实现 ADT 堆和优先级堆(尽管在某些方面有更好的实现!
您应该首先学习和理解数据结构背后的理论- 不同的ADT,以及我们何时使用每种结构。然后开始探索这些的不同理论实现,然后才开始自己实现数据结构!
事实上,在我所知道的大多数DS课程中,编码只是作业中很小的一部分,我在整个课程中只实现了WAVL Tree(自平衡二叉搜索树的实现,类似于红黑树(和Fibonnaci-Heap,使用Java。
该领域最著名的书籍是算法导论/CLRS,大多数课程都基于它。
P.S 如果你在 C/C++ 中查看数据结构的实现,它可能会变得非常压倒性,所以避免特定的实现 - 更高级别的实现更重要。