![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 60
一Nanase一
这个作者很懒,什么都没留下…
展开
-
chapter1+chapter 2
chapter 1数据类型原子类型(int,string…)结构类型(struct)抽象数据类型(class,可以封装操作)存储结构顺序存储链式存储索引存储散列存储逻辑结构分为线性和非线性结构。线性包括线性表,栈,队列,串等、非线性包括树形和图和集合。算法复杂度排序书P6chapter 2顺序表顺序表的查找,插入,删除等操作的平均操作次数计算法链表单链表构建法之头插法和尾插法(P28)单链表判空条件:head->next==null;循环单链表判空原创 2021-10-27 18:23:12 · 112 阅读 · 1 评论 -
chapter 6-4图的应用
相关算法的实现Prim,Kruskal,Dijkstra,Floyd相关算法要点Prim和Kruskal属于最小生成树算法;Dijkstra属于单源最短路算法;Floyld属于各顶点间最短路算法Prim适用于边稠密图,因为其时间复杂度与边无关,算法实现只遍历点。时间复杂度为O(v^2)Kruskal适用于边稀疏而点较多的图,因为其算法实现主要靠遍历边;边一般按从小到大用堆存放,因此取边复杂度为O(logE),此外遍历每条边并使用并查集评估,总的时间复杂度O(ElogE).Dijkstra时间复原创 2021-09-29 10:54:49 · 92 阅读 · 0 评论 -
chaper 6-3 图的遍历
BFS广度优先使用辅助队列完成遍历。图的广度优先搜索与二叉树的层序遍历顺序一致。注意若为邻接矩阵存储的图,由于邻接矩阵的唯一性,根据BFS生成的生成树也唯一;而邻接表的存储表示不唯一(主要看存入边的顺序),因此其生成树不唯一。BFS的邻接矩阵实现:图算法BFS的邻接表实现: struct Enode { int data; Enode* next; int weight;//边权}; Enode enodelist[20];bool vis[200] = { false };原创 2021-09-27 13:56:18 · 123 阅读 · 0 评论 -
指针开辟二维数组
char **a; a = new char * [rowsNum]; for (int i = 0; i < rowsNum; i++) { a[i] = new char [columnsNum]; for (int j = 0; j < columnsNum; j++) { a[i][j] = j; printf("%d ", a[i][j]); } printf("\n"); } for (int i = 0; i < .原创 2021-09-26 13:42:02 · 161 阅读 · 0 评论 -
chapter 5-5 树与二叉树的应用
二叉排序树查找二叉排序树比当前结点小则走向该节点的左孩子,比当前结点大则走向右孩子。不断向下走直至找到目标结点或者走到空即为未命中。二叉排序树的插入包含排序树的查找过程。先将待插入数字作为查找目标开始查找;若在树内命中说明已经存在无需再插入;若未命中,则最后查找到达的空树处即为应该插入的位置。二叉排序树的删除一个递归的过程。若待删除结点为叶节点,直接删除。若待删除结点有左右孩子,将其值改为其直接后继的值。则待删除结点变为其直接后继结点。(若无右孩子则改为直接前驱,若左右孩子都有或只有右孩原创 2021-09-25 12:37:44 · 62 阅读 · 0 评论 -
chapter 5-4 树与森林
树的表示法双亲表示法-1表示根节点。孩子表示法孩子兄弟表示法注意,此种表示法是将树和森林转化为二叉树的写法。即对于每个结点,其lc为它的第一个孩子,rc代表的子树为它的兄弟结点。树,森林与二叉树转换见书P162.关于遍历问题:树的先根遍历即先访问根结点,再访问树的子节点(从左往右),对于每一颗子树也如此。树的先根遍历序列,与将其转化为二叉树之后的先序序列相同。树的后根遍历即先从最左结点开始,从左往右访问子节点,最后访问根节点。树的后根遍历序列,与将其转化为二原创 2021-09-23 11:51:35 · 128 阅读 · 0 评论 -
chapter 5-3 二叉树遍历与线索二叉树
chapter 5 树与二叉树二叉树遍历方法二叉树遍历方法线索二叉树三种遍历顺序的构建方法大致相同,先序遍历构建时需要注意细节。线索二叉树的数据单元:struct ThreadTree { int data; ThreadTree* lc; ThreadTree* rc; int ltag, rtag;//0表示有子节点,1表示为前驱或者后继线索};先序构造线索二叉树注意先序构造时需要防止线索化后的节点干扰遍历流程//前序线索化void visitPre(ThreadTr原创 2021-09-19 11:58:25 · 77 阅读 · 0 评论