
数据结构
郊眠寺山雀
你其实没那么努力 你永远可以做得更好
展开
-
strtok
char *token, *tokens[LEN];token = strtok("str", "delim");tokens[0] = token;int i = 0;while (token = strtok(NULL, "delim")) { tokens[++i] = token; } 常用切割套路↑...原创 2021-12-04 17:22:42 · 462 阅读 · 0 评论 -
关于C字符串
C字符串被存储在.rodata段中,ro意为read only,只读权限,所以直接对字符串进行操作是不合理的。可以将字符串理解为一个常量地址,可以通过下标直接对字符串内部的字符进行访问,如果要对字符串内容调用修改,可以先将其存入一个缓存区,例如:一个函数内的局部字符数组main函数内部↓char *str= "hello world";//该语句意为将一个常量地址赋给一个局部字符数组的首地址;...原创 2021-11-16 21:41:03 · 151 阅读 · 0 评论 -
关于栈和队列固定结构的标记思想
因为栈和队列都是只能从端口操作数据的结构,并不能直接对中间段数据进行操作,所以具有某种固定的数据连续性,例如:栈内数据分别为 2, 3, 4, 7, 5,那么2,3,4可以看做一段数据,因为后续的7, 5 和它并没有联系,那么在这种固定连续数据结构中寻找特殊数据时,就可以对每段进行标记,例如:输出栈内最大数据,2,3, 4最大数据为4, 但2,3, 4, 7, 5最大数据为7,所以最后标记栈内最大元素为 2, 3, 4, 7, 7核心思想:这种连续结构的访问范围是,当前数据及以下,优先弹出栈顶,所以当.原创 2021-10-29 12:41:43 · 83 阅读 · 0 评论 -
递归与循环
递归好处:代码更简洁清晰。一般来说,一个人可能很容易的写出前中后序的二叉树遍历的递归算法,要写出相应的非递归算法就比较考验水平了,恐怕至少一半的人搞不定。所以说递归代码更简洁明了。递归坏处:由于递归需要系统堆栈,所以空间消耗要比非递归代码要大很多。而且,如果递归深度太大,可能系统撑不住。一般尾递归(即最后一句话进行递归)和单向递归(函数中只有一个递归调用地方)都可以用循环来避免递归,更复杂的情况则要引入栈来进行压栈出栈来改造成非递归,这个栈不一定要严格引入栈数据结构,只需要有这样的思路,用数组什么的就转载 2021-10-01 14:34:08 · 255 阅读 · 0 评论 -
数据结构学习笔记(九)之 森林与并查集
从quick find到 quick union 到 weighted quick union 到 路径压缩 的算法优化过程quick find 染色思想,合并数据时,只需将数据的“颜色”改变到和自己一致 数据查找复杂度O(1),因为可以通过“颜色”直接查找 数据合并复杂度O(n),合并时需要同时改变所有数据的“颜色”quick union 利用树结构,合并数据时,将数据一整棵树连到自己的分支上,查找时,从下向上查找根节点...原创 2021-09-28 19:22:47 · 133 阅读 · 0 评论 -
数据结构学习笔记(八)之 折半、哈希
折半查找原创 2021-09-22 11:39:28 · 147 阅读 · 0 评论 -
数据结构学习笔记(七)之 排序篇
插入排序 遍历每个数据,把每个数据和它前方数据比较,不满足条件就停止原创 2021-09-17 11:50:37 · 103 阅读 · 0 评论 -
数据结构学习笔记(六)之 堆与优先队列
堆 概念:一种数据关系,一个上级与两个下级之间的联系,每个下级又有两个下级,以此获得一种数据顺序,分为大顶堆和小顶堆,大小的区别是,每个堆的上级比下级大还是小 实现:用数组按级储存,0是第一级,1,2是第二级,3,4,5,6是第三级...... 上级与下级之间的关系,(上级下标 * 2 + 1) 为第一个下级,+2为第二个下级 (下级下标 - 1 / 2) ...原创 2021-09-16 03:16:46 · 117 阅读 · 0 评论 -
数据结构学习笔记(五)之 线索树
原理 根据遍历节点的顺序来建立关系,建立好后的线索树不需要通过从根开始依次递归来进行遍历,而只需要根据节点之间的关系来进行遍历。建立 利用节点上的空指针进行赋值,左指针赋值它的上一个遍历节点的地址,右指针赋值它的下一个遍历节点的地址,增加一个节点成员flag来记录指针记录的是前驱后继或是子节点例如:中序遍历时,左根右,从最左节点开始,根据节点上的前驱和后继进行遍历...原创 2021-09-14 17:05:05 · 236 阅读 · 0 评论 -
数据结构学习笔记(四)之 树与二叉树
树原创 2021-09-12 11:16:52 · 661 阅读 · 0 评论 -
数据结构学习笔记(三)之 栈与队列
栈原创 2021-09-10 09:38:49 · 103 阅读 · 0 评论 -
数据结构学习笔记(二)之 数组与链表
数组 插入,删除:mymcpy 扩容:realloc原创 2021-09-07 00:17:32 · 94 阅读 · 0 评论 -
数据结构tips(持续更新)
关于realloc:修改内存,原内存内容不变,和malloc一样,扩展的内存也不进行初始化 realloc(待修改的内存指针ptr,修改后的内存空间size+expsize) 当ptr为空时,等于malloc 当size+expsize为空时,等于free 当需要扩容的后续内存被其他数据...原创 2021-09-06 16:28:38 · 139 阅读 · 0 评论 -
数据结构学习笔记(一)之 关于数据
内存 不同数据在不同区域,区域之间权限不同,段错误(segmentation fault)通常是权限超出了 函数内的局部变量:栈段( stack segment )全局变量:.data段 大数据:从堆(heap)中申请空间,因为栈段的空间是很有限的,但是堆中的空间理论上和约等于总内存一样大 特点:堆中申请的空间使用如果不释放,里面的内容会保留,再次被申请时这些老旧的内容会对新的使用造成困...原创 2021-09-05 17:39:25 · 91 阅读 · 0 评论