兵书,是对大量战争指挥经验的总结。
数据结构,是对大量程序编写经验的总结。
一些程序,处理的数据用数组、链表存储;一些数据比如组织机构、家谱数据、硬盘文件组织等,要用树形结构处理;一些数据,比如地图等,要用图形结构处理。
因此,会了线性结构、树形结构、图形结构的共性知识,就可以做到四两拨千斤。
对于学生,要按照自己的上大学的目的来学习:
1、只想混个及格的,了解各种结构的思想即可,不需要会编程;
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模板,其他语言的哈希表类