数据结构
文章平均质量分 77
不是颜
。。。
展开
-
图的导航-最短路径算法-深度优先遍历
图的导航应用,最短路径算法使用深度优先遍历(DFS)递归实现。原创 2023-12-13 22:04:57 · 504 阅读 · 0 评论 -
图-数据结构
图这个数据结构的基本概念,图的两种表示方法和它们的优缺点,以及图的创建、遍历操作。原创 2023-12-11 21:50:06 · 994 阅读 · 0 评论 -
循环单向链表与约瑟夫问题
实现了单向循环链表的初始化、尾部插入、打印,然后利用单向循环链表解决了约瑟夫问题。原创 2023-12-08 20:50:16 · 804 阅读 · 0 评论 -
哈夫曼树与哈夫曼编码
哈夫曼编码的介绍以及应用,还有图示构建哈夫曼二叉树以及案例,加上哈夫曼编码的打印。原创 2023-11-22 19:20:51 · 833 阅读 · 0 评论 -
哈希表----数据结构
简单哈希表的场景引入和哈希表的一些概念,以及哈希表的一些操作,但是并不是很全面,适用于快速上手原创 2023-11-05 13:34:22 · 314 阅读 · 0 评论 -
优先队列----数据结构
优先队列的算法实现原创 2023-11-01 23:05:27 · 620 阅读 · 0 评论 -
中缀表达式转后缀表达式
那是因为对于一个中缀表达式 5+8/2 ,我们人可以轻易知道各运算的次序得到答案 9 ,可是计算机不能,计算机很笨,所以需要转换成后缀表达式,这样计算机就能在不考虑各符号优先级的情况下,也得出答案 9。3、遇到右括号 ) :意味着括号中的运算结束了,将运算符一个一个弹出栈顶并且输出到后缀表达式,直到遇到左括号,但是左括号不加入到后缀表达式。例如:(1+2)*5。(3+5)*3-2/1为样例,结果是3 5 + 3 * 2 1 / -)8.遍历到-,小于等于*的优先级,*出栈输出到后缀表达式,-入栈。原创 2023-10-31 21:04:27 · 158 阅读 · 0 评论 -
树----数据结构
如同线性表与栈、队列的关系,二叉树就是操作受限的树,那二叉树就是一个 一个节点最多只有两个分支的树(一个父节点最多有两个子节点),不一定一个节点一定是有两个子节点,左边的分支叫做左子树,右边的分支叫做右子树。:二叉树最开始时只有一个根节点,叶子节点数为 1,只要根节点有两个子节点(分了两个岔路,变为了度数为 2 的节点),那叶子节点数就加 1 ,因为到最后,两个子节点的最下面一定有两个叶子节点,以此类推。:也能从第一点中得到深度为 h-1 的最多的节点数,最少的节点就是所有的父节点都只有一个子节点的情况。原创 2023-10-30 21:30:54 · 102 阅读 · 0 评论 -
顺序栈的实现----数据结构
对于栈(Stack),后进先出(Last In First Out,LIFO),栈也是一种线性表,只不过是一种操作受限的线性表,只能在一端操作,也就是不允许在中间进行查找、插入、删除等操作。原创 2023-10-23 11:05:58 · 274 阅读 · 0 评论 -
循环队列----数据结构
tail == head 为判空条件,结合之前的移动问题,所以不是 tail + 1 == head,而是 (tail + 1) % MAX_SIZE == head 为判满条件。由于 头指针和尾指针的范围是 [ 0 , MAX_SIZE -1 ] ,一旦等于MAX_SIZE,就变为0,所以可以使用到取模操作,每次移动完,再对 MAX_SIZE 取模。当出现这种情况时:头指针和尾指针都指向了不可访问的地方(越界了),就无法在插入(入队)了,队列的空间还空着,却无法利用,这造成了空间的浪费。原创 2023-10-21 16:53:24 · 214 阅读 · 0 评论 -
顺序队列----数据结构
队列,符合先进先出特点的一种数据结构,是一种特殊的线性表,但它不像线性表一样可以任意插入和删除操作,而是只允许在表的一端插入,也就是在队列的尾部进行插入;只允许在表的另一端进行删除,也就是在队列的头部进行删除。以下的实现是顺序队列(存储空间在内存上是连续的队列)原创 2023-10-20 20:07:16 · 399 阅读 · 0 评论 -
链式队列----数据结构
/队列中的元素类型//和单链表结点的定义一样}QueueNode;//可以用QueuePtr创建一个指向结点的指针typedef struct LinkQueue //定义的是队列头、尾指针int length;//存储队列的长度,因为要频繁获取长度//指向第一个结点,队头指针//指向最后一个结点,队尾指针}Queue;原创 2023-10-19 22:46:44 · 467 阅读 · 0 评论 -
堆-----数据结构
define DEFAULT_CAPCITY 120 //默认的堆容量int* arr;//存储堆元素的数组int size;//堆中元素的个数//堆的容量}Heap;//函数声明。原创 2023-10-19 21:11:18 · 384 阅读 · 1 评论 -
单链表---结构体实现
链表称为线性表的链式存储,顺序表逻辑上相邻的数据,存储位置也相邻。链表逻辑上相邻的数据,存储位置是随机分布在内存的各个位置上的。int date;//数据域,存储数据,这里是int类型的数据// 指针域,指向了后继元素(下一个结点)的地址//两个别名的作用是一模一样的,只是为了区分头结点和结点。原创 2023-10-13 18:29:05 · 1225 阅读 · 1 评论 -
单调队列---数据结构与算法
队列也是一种受限制的线性表和栈相类似,栈是先进后出,而队列是先进先出,就好像一没有底的桶,往里面放东西,如图在这里也是用数组来实现队列,用数组实现的叫做顺序队列队列的数组模拟//在队头插入元素 队尾弹出元素//hh代表队尾的下标 tt代表队头的下标//插入//弹出hh++;//判断队列是否为空else empty//取出队头元素q[hh];原创 2023-10-05 21:16:26 · 164 阅读 · 0 评论 -
数据结构---单链表
多个结点加上head(头结点)指针(指向了第一个结点的位置)就构成了单链表,最后一个结点的Next指向了空,其中结点的数据存放并不是连续的,像数组那样,但是只要使用Next指针,一样可以达到逻辑上的连续。第 n 个插入的数。我们先来实现第一种,我们添加的结点就要指向-1,因为他是链表中最后一个结点,那头结点就要存储我们这个结点的数组的下标,也就是这个结点的位置0,如图。将某一个结点删除,一是将头结点后的结点删除,二是将k结点后面的结点删除,不是真正的删除它在数组中的存在,而是链表中访问不到它了。原创 2023-09-16 13:52:17 · 632 阅读 · 3 评论