分级学习数据结构--数据结构导学

兵书,是对大量战争指挥经验的总结。

数据结构,是对大量程序编写经验的总结。

一些程序(比如学生成绩管理系统),处理的数据用数组、链表存储;一些数据比如组织机构、家谱数据、硬盘文件组织等,要用树形结构处理;一些数据,比如地图等,要用图形结构处理。

因此,会了线性结构、树形结构、图形结构的共性知识,就可以做到四两拨千斤。

对于学生,要按照自己的上大学的目的来学习:

1、只想混个及格的,了解各种结构的思想即可,不需要会编程;

2、想要考计算机专业研究生的,要了解思想,会写算法源代码;

3、想从事软件开发工作的,不仅要了解思想,还要会编程序实现,还要选择一门语言,会调用现成的数据结构并懂其原理。

对于老师,一般是按照上面(2)来讲授课程,以(3)来引导学生。

在实际中,一般的数据结构都能在各种语言中得以实现,一般的程序员是数据结构的使用者。只有当问题比较特殊,当前的数据结构不能满足需求时,才需要去设计数据结构。

所以程序员的兼有用户和开发者的双重角色,使用库函数、现成数据结构、第三方插件时就是用户,而作为软件的制造者,他又是开发者。

一、顺序表

就是能够自动增加空间和自动缩小空间的数组。

1、看书

大学是一个系统的学习某个学科或者专业的过程,一定要能沉下心来看书。

纸质书的好处是能随身携带,不用担心没有电,而且对眼睛损害小。

对于比较厚的书,可以按照章节裁开,更容易携带。

初次进入专业,肯定会有比较多的名词不熟悉,就要去查百度、问知乎,

理解后,用自己的语言做好批注。

对于数据结构这门课,是计算机专业核心课程,考研课程,牛*企业笔试面试必考知识,更需要仔细阅读。

2、一维数组

优点:在内存中占据连续空间,能够按照下标存取数据,速度快;

缺点:一旦定义后,所占据内存大小不能改变。

3、一维动态数组

优点:有需求时向操作系统申请空间,有一定的灵活性;

缺点:向操作系统申请空间的时间开销比较大。

4、c++模板vector、C#的List、Java的ArrayList、python的List等。

这些都是基于一维动态数组实现的,因为这些语言都是面向对象语言,因此顺序表就被表示成模板的形式,可以支持泛型编程。

5、顺序表的增删改查等基本操作

在顺序表中增删改查后,不能改变数据的线性关系。

6、将传统数据结构教材上的查找、排序内容移动到此处。

二、链表

1、看书

2、单链表

3、双向链表

4、循环链表

5、c++模板list、C#的LinkList等。

6、各种结构的增删改查、排序等基本操作

三、栈

1、看书

2、基于顺序表的栈

3、基于链表的栈

4、C++模板的stack,其他语言的stack

5、栈的入栈、出栈、得到栈顶元素等操作

四、队列

1、看书

2、基于顺序表的队列

3、基于链表的队列

4、C++模板的queue,其他语言的queue

5、队列的入队、出队、得到队头元素等操作

五、字符串

1、看书

2、基于顺序表的字符串

3、基于链表的字符串

4、C++模板的String,其他语言的String

5、串的连接、拷贝、比较等操作

六、二叉树

1、看书

2、基于数组的二叉树

3、基于二叉链表、三叉链表的二叉树

4、基于伪指针的二叉树

5、二叉排序树、平衡二叉树、红黑树、B-树

6、二叉树的前序、中序、后序、层序遍历

七、树和森林

1、看书

2、树、森林的存储结构

3、树和森林的遍历

4、等价类、并查集

八、图

1、看书

2、图的邻接矩阵存储结构

3、图的邻接表存储结构

4、图的深度优先、广度优先遍历算法

5、图的最小生成树算法,Prim和Kruscal

6、图的最短路径算法,Dijkstra和Floyd

7、拓扑排序

九、哈希表

1、看书

2、哈希表概念、原理、哈希函数

3、C++中的HashTable模板,其他语言的哈希表类

猜你喜欢

转载自blog.csdn.net/weixin_43917370/article/details/108234395