首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据结构..。那我怎么理解他们?

数据结构..。那我怎么理解他们?
EN

Stack Overflow用户
提问于 2010-07-27 16:10:24
回答 20查看 8.2K关注 0票数 40

我是一名计算机科学专业的学生,大约一周后.我将重新学习一门数据结构课程,使用C++来应用这个理论。是的,我的确说了“重拍”。去年秋天我上了这门课,我觉得还有更多的东西需要学习。作为一名学生,我觉得我必须知道基本知识,因为在未来的课程中,通过已经知道基本概念,更容易理解新概念。而不是每次都要重新学习。

第一次,我没有在C++方面的经验,这门课程期望我们在第一周末开始编码。我艰难地完成了第一批编程任务(MPs)。不用说,我已经习惯了,在这学期剩下的时间里,我在语法方面没有什么问题。但是,数据结构变得越来越困难,理论(Big )成为了困难的部分。

总之,这是一次很棒的经历,但我觉得我的问题是我没有养成良好的学习习惯。我做了议员们的演讲,但我的心似乎不在我身边。我想第二次改变这一点,因为回首课堂,我确实过得很愉快,而且我也很喜欢这方面的材料。但是,当我需要花时间思考如何有效地使用数据结构时,我发现自己花了太多的时间来思考/设置数据结构。

学习理论是困难的(主要是因为它不是那么令人兴奋),所以我应该如何应用自己来真正理解所涵盖的类的数据结构?我一直是一个视觉学习者,一个互动学习者.我不想花时间做我的议员。相反,我想花时间真正地学习/理解这些概念,然后直接应用这些知识。

我在找任何建议..。也许是关于过去对你有用的学习习惯的建议,学习这样的概念。或者对好的笔记技巧的建议.任何你想要分享的东西:)最重要的是,如何在学期开始前做好准备。

即使选择了答案,也请随时提供反馈。我在寻求你的建议..。这就是我发帖子的原因:)谢谢!

备注:本课程涵盖的数据结构和主题:列表、堆栈、队列、树(不同种类)、哈希表、图表、搜索/排序/遍历技术。

UPDATE:下面列出了从目前为止的答案中编译的链接和引用。

  • C++中的Robert算法
  • Cormen算法简介
  • NIST算法和数据结构词典
  • 排序算法
  • 树形横断面
  • 图横断面
  • list.aspx
  • class.aspx

UPDATE 2:下面是我找到的更多来源的列表:

  • http://people.ksp.sk/~kuko/bak/big/
  • http://webdiis.unizar.es/asignaturas/EDA/AVLTree/avltree.html
  • http://www.dgp.toronto.edu/people/JamesStewart/270/9798s/Laffra/DijkstraApplet.html
  • http://www.cs.duke.edu/csed/jawaa2/examples/BFS.html
EN

回答 20

Stack Overflow用户

发布于 2010-07-27 16:15:32

以下是对我帮助最大的..。因为你是一个视觉的人,谷歌一些可视化的排序算法,树遍历,哈希,等等,以了解发生了什么。然后,尝试用不同的结构制作一个简单的程序,并对它们的不同排列进行实验--例如,你可以创建一个链表来开始,然后把它变成一个循环链表,然后使它成为一个双链表,然后使它成为一个双循环链表,等等……

您只需对这些结构进行实验,在此过程中,您将开始了解哪些数据结构适合您开发的应用程序。

这里有一些很好的参考资料给你。排序算法:http://www.sorting-algorithms.com/树遍历:http://nova.umuc.edu/~jarc/idsv/lesson1.html图遍历:http://www.cosc.canterbury.ac.nz/mukundan/dsal/GraphAppl.html

至于效率(Big分析),一旦您了解了数据结构的每个操作的算法级发生了什么,它就或多或少会自然而然地出现在您的面前。

我的大学强调的一件事是开发我们自己的数据结构实现(这是自下而上的学习),而不深入到预先建立的C++模板(自上而下学习)。通过从头开始,您真正了解了插入、删除、搜索(遍历)和从特定结构访问数据所涉及的开销,这将有助于您在未来设计系统时的直觉。

票数 17
EN

Stack Overflow用户

发布于 2010-07-27 16:15:56

练习。

我给你的第一条建议是尽可能精通C++。

数据结构和编程是两个非常不同的主题。如果您发现自己在编程方面有困难,那么您不太可能理解数据结构。

你是如何精通C++的?练习。把一切都安排好。尽你所能了解它。写几十个小程序。任何你能做的事情都可以让你对C++感到舒服。

如果您精通C++,那么我向您保证,数据结构将变得更容易。(请注意,我不是说容易,而是说容易:)

票数 10
EN

Stack Overflow用户

发布于 2010-07-27 16:19:13

学习数据结构的关键是从一些小的东西开始,然后在此基础上建立起来。让我们从一个简单的C结构开始:

代码语言:javascript
复制
struct Person {
  char name[100];
  int age;
};

这个数据结构代表一个人。您需要确保您理解类似这些简单的结构概念,然后才能转移到更大的方面。

例如,当您开始讨论诸如堆栈和队列之类的数据结构时,首先尝试从概念上了解数据结构正在做什么。例如,对于堆栈,我们使用的是LIFO原则,即。对于队列,我们使用FIFO原则(先入先出)。

还有一个让很多人感到震惊的链接列表。您需要很好地理解这一项的指针,因此,在尝试处理链接列表之前,首先要做一些简单的工作:

代码语言:javascript
复制
int* x;
int y = 10;
x = &y;

您应该能够查看该代码并立即知道它在做什么。如果不能,那么您还没有准备好转移到更高级的数据结构,如链接列表。

我想要强调的主要一点是,你需要把基本知识冷静下来,然后在这些基础上建立起来。同样重要的是要非常努力地跟上课堂,询问老师或导师你是否遇到了麻烦,并确保你每周都走在正轨上,不要落在后面。

计算机科学课程就像数学课,每周都建立在你从前N周学到的所有东西的基础上。因此,如果你不理解一个关键的概念,例如指针,那么你将在本学期剩下的时间里面临重大的困难。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3345611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档