随笔分类 -  数据结构学习笔记

单链表中的环 相关算法题
摘要:首先,关于单链表中的环,一般涉及到一下问题: 1.给一个单链表,判断其中是否有环的存在; 2.如果存在环,找出环的入口点; 3.如果存在环,求出环上节点的个数; 4.如果存在环,求出链表的长度; 5.如果存在环,求出环上距离任意一个节点最远的点(对面节点); 6.(扩展)如何判断两个无环链表是否相交 阅读全文
posted @ 2020-08-06 16:47 kuotian 阅读(304) 评论(0) 推荐(0) 编辑
数据结构学习笔记07散列查找(哈希表)
摘要:1.散列表(Hash) 查找的本质: 已知对象找位置。 有序安排对象:全序、半序 直接“算出”对象位置:散列 时间复杂度几乎是常量:O(1),即查找时间与问题规模无关 散列查找法的两项基本工作: 计算位置:构造散列函数确定关键词存储位置; 解决冲突:应用某种策略解决多个关键词位置相同的问题 散列(H 阅读全文
posted @ 2016-05-16 13:12 kuotian 阅读(919) 评论(0) 推荐(0) 编辑
数据结构学习笔记06排序 (快速排序、表排序、基数排序)
摘要:1.快速排序 不稳定 分而治之 找主元pivot,小于主元划分为一个子集,大于主元的划分为一个子集 然后进行递归 最好情况:每次主元正好中分,T(N) = O( NlogN ) 选主元 的方法有很多,这里用 取头、中、尾的中位数。 直接选A[0]为pivot,时间复杂度T ( N ) = O( N 阅读全文
posted @ 2016-05-07 22:10 kuotian 阅读(2874) 评论(2) 推荐(0) 编辑
数据结构学习笔记06排序 (冒泡、插入、希尔、堆排序、归并排序)
摘要:前提void X_Sort ( ElementType A[], int N ) 大多数情况下,为简单起见,讨论从小大的整数排序 N是正整数 只讨论基于比较的排序(> = < 有定义) 只讨论内部排序 稳定性:任意两个相等的数据,排序前后的相对位置不发生改变 1.冒泡排序 (从小到大排序) 物理意义 阅读全文
posted @ 2016-05-04 16:40 kuotian 阅读(522) 评论(0) 推荐(0) 编辑
数据结构学习笔记05图(最小生成树 Prim Kruskal)
摘要:最小生成树Minimum Spanning Tree 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。 树: 无回路 |V|个顶点,一定有|V|-1条边 生成树: 包含全部顶点 |V|-1 条边都在图里 边权重和最小 最小生成树存在 阅读全文
posted @ 2016-04-25 22:46 kuotian 阅读(705) 评论(0) 推荐(0) 编辑
数据结构学习笔记05图 (邻接矩阵 邻接表-->BFS DFS、最短路径)
摘要:数据结构之图 图(Graph) 包含 一组顶点:通常用V (Vertex) 表示顶点集合 一组边:通常用E (Edge) 表示边的集合 边是顶点对:(v, w) ∈E ,其中v, w ∈ V 有向边<v, w> 表示从v指向w的边(单行线) 不考虑重边和自回路 无向图:边是无向边(v, w) 有向图 阅读全文
posted @ 2016-04-10 23:37 kuotian 阅读(5825) 评论(0) 推荐(1) 编辑
数据结构学习笔记04树(堆 哈夫曼树 并查集)
摘要:一.堆(heap) 优先队列(Priority Queue):特殊的“队列”,取出元素的顺序是依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。 数组 : 插入 — 元素总是插入尾部 ~ O ( 1 ) 删除 — 查找最大(或最小)关键字 ~ O ( n ) 从数组中删去需要移动元素 ~ 阅读全文
posted @ 2016-04-04 16:19 kuotian 阅读(734) 评论(0) 推荐(0) 编辑
数据结构学习笔记04树(二叉树、二叉搜索树、平衡二叉树)
摘要:一.树 树的基本术语 ①结点的度(Degree):结点的子树个数 ②树的度:树的所有结点中最大的度数 ③叶结点(Leaf):度为0的结点 ④父结点(Parent):有子树的结点是其子树的根结点的父结点 ⑤子结点(Child):若A结点是B结点的父结点,则称B结点是A结点的子结点;子结点也称孩子结点。 阅读全文
posted @ 2016-03-29 18:13 kuotian 阅读(1066) 评论(0) 推荐(0) 编辑
数据结构学习笔记03队列
摘要:队列(queue),是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。是一种先进先出(FIFO)的数据结构。 一、队列的顺序存储->循环队列 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #define OK 1 5 #de 阅读全文
posted @ 2016-03-24 17:55 kuotian 阅读(371) 评论(0) 推荐(0) 编辑
数据结构学习笔记02堆栈
摘要:栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。是一种后进先出(LIFO)的数据结构。 一.栈的顺序存储 如图,左图为空栈,右图为已存放数据的栈。不难发现,栈只有一个口子,数据只能从一端进行入栈(push)和 阅读全文
posted @ 2016-03-22 18:20 kuotian 阅读(586) 评论(0) 推荐(0) 编辑
数据结构学习笔记01链表
摘要:一.单向链表: 由于线性表的顺序存储结构(数组),在插入和删除需要移动大量元素以及其他特殊情况下,效率低下,耗时费力,此处引入了链表的概念。 链表的基本组成单元为结点(node),包括两个域:存储数据元素信息的域->数据域;存储直接后继存储位置的域(指针)->指针域。 1 #include <std 阅读全文
posted @ 2016-03-21 16:00 kuotian 阅读(486) 评论(0) 推荐(0) 编辑
数据结构学习笔记00基础认识
摘要:由于不是计算机专业的学生,很遗憾我们专业并没有开数据结构这门课。现在学习数据结构的网课,也购买了教材;教材上给了大部分的代码,但是我还是打算根据网课和课本整理一遍,自己打一遍代码,去调试通过。呐、希望自己不会半途而废 (^-^)V 一.关于空间的使用 Eg:写程序实现一个函数PrintN,使得传入一 阅读全文
posted @ 2016-03-18 19:46 kuotian 阅读(470) 评论(0) 推荐(0) 编辑