把数据结构几种基本结构过了一遍以后,简单的梳理一遍,以便于之后的复习。
1:如果理解各种数据结构下的各种存储结构?
从视点的不同来说,数据结构分为逻辑结构和物理结构。
逻辑结构:数据对象中数据元素之间的相互关系。
线性表、树、图都是反应的是数据元素之间的相互关系。
物理结构(存储结构):反应的是数据的逻辑结构在计算机中的存储形式。
顺序存储结构和链式存储结构就是他的物理结构。
2:每种结构的struct是什么样的?
如树中用结点表示数据元素,那每个结点包含的“内容”有哪些?
不同的存储结构它的结点结构式不一样的?
(由于本章内容只做结构梳理,具体内容会在接下来的内容中补充完整)
3:对每一种结构的具体操作有哪些?
线性表: 存储结构
链式存储结构
栈:栈的顺序结构与链式结构
队列:循环队列与链式存储结构
串:串的两种存储结构
树:树与二叉树的存储结构
图:图的存储结构
4:由各种存储结构衍生出来的运用有哪些(经典的算法)?
栈:递归
串:定位匹配运用:朴素的模式匹配算法与KMP模式匹配算法
树:赫夫曼树与赫夫曼编码
图:求最小生成树:普利姆算法、克鲁斯卡尔算法
求最短路径:迪杰斯特拉算法、佛洛依德算法
求关键路径:关键路径算法、拓扑排序算法
5:能不能用一种语言把各种算法实现一遍以及把各种数据结构的操作实现一遍?
例如一些常见的面试题(来源于程序员面试宝典):
5.1链表
(1)编程实现一个单链表的建立、测长、打印
(2)编程实现单链表删除节点
(3)编程实现单链表的插入
(4)编程实现单链表的排序
(5)编程实现单链表的逆置
5.2双链表
(1)编程实现双链表的建立
(2)编程实现双链表的删除、插入节点
5.3循环链表
运用C++实现某个算法?
5.4队列
(1)编程实现队列的入队、出队操作
5.5栈
(1)编程实现入栈、出栈操作
5.6 堆
堆栈、堆栈我们经常性提到堆栈堆栈的问题,那堆和栈是一回事么?
如何理解堆(heap)与栈(stack)的区别?
5.7树、图、哈希表
这类问题在面试中很少涉及到编程实现的问题,一般性就是提出一个问题叫你运用树、图的思路来分析问题。这就需要我们对树、图、哈希表能够深入的了解。