数据结构学习笔记
不想CRUD的小凯
从零开始,一步一步走上去!
展开
-
学习笔记-数据结构-线性表(2024-04-29)
用k记录顺序表L中不等于x的元素的个数(即需要保存的元素个数),扫描时将不等于x的元素移动到下标k到位置。扫描结束后修改L的长度。用k记录顺序表L中等于x的元素个数,一边扫描L,一边统计k,并将不等于x的元素前移k个位置。扫描结束后修改L的长度。原创 2024-05-12 21:37:06 · 343 阅读 · 0 评论 -
学习笔记-数据结构-线性表(2024-04-27)
扫描顺序表L的前半部分元素,对于元素L.data[i](0原创 2024-04-28 19:44:22 · 249 阅读 · 1 评论 -
学习笔记-数据结构-顺序表(2024-04-25)
从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。原创 2024-04-26 11:04:24 · 149 阅读 · 2 评论 -
学习笔记-数据结构-线性表(2024-04-25)
而在动态分配时,存储数组的空间是在程序执行过程中通过动态存储分配语句分配的,一旦数据空间占满,就另外开辟一块更大的存储空间,将原表中的元素全部拷贝到新空间,从而达到扩充数组存储空间的目的,而不需要一次性地划分所有空间。对数组进行静态分配时,因为数组的大小和空间已经事先固定,所以一旦空间占满,再加入新数据就会产生溢出,进而导致程序崩溃。动态分配不是链式存储,它同样也属于顺序存储结构,物理结构没有发生变化,依然是随机存取的方式,只是分配的空间大小可以在运行时动态决定。静态分配的顺序表存储结构描述为。原创 2024-04-26 10:57:27 · 227 阅读 · 1 评论 -
学习笔记-数据结构-线性表(2024-04-24)
p 用于追踪新链表的最后一个节点,最初设置为 NULL。q 指向当前正在处理的原链表的节点,最初是链表的头节点。在 while 循环中,遍历原链表。循环的每一次迭代都会处理一个节点,将其从原位置移动到新链表的前端。这通过改变节点的 next 指针实现,使其指向新链表的当前第一个节点 p。当 q 为 NULL 时,意味着已经处理完所有的节点,此时 p 指向新链表的头节点。最后,将链表的头指针 L 更新为 p,完成链表的反转。在移动节点之后,p 更新为 q,q 更新为 r,以继续遍历和反转剩余的链表。原创 2024-04-26 10:54:03 · 303 阅读 · 1 评论 -
学习笔记-数据结构-线性表(2024-04-23)
指针La和Lb分别是两个带头节点单链表的头指针,将表La的第i个元素其len个元素删除并插入到表Lb的第j(j>=1)个元素之前。将La中的第i个元素开始的Len个元素插入到Lb中的第j个位置。原创 2024-04-24 16:45:26 · 203 阅读 · 0 评论 -
学习笔记-数据结构-树与二叉树(2024-04-23)
这是因为每个叶节点都有2个空指针,每个度为1的节点都有1个空指针,空指针总数为2n0+n1,又因为n0=n2+1,所以空指针的总数为n0+n1+n2+1=n+1。附设指针pre指向刚刚访问过的节点,指针p指向正在访问的节点,即pre指向p的前驱。在中序遍历的过程中,检查p的左指针是否为空,若为空就将它指向pre;若无右子树,令rchhild指向其后继节点,还需要增加两个标志域,以标识指针域指向左(右)孩子或前驱(后继)。二叉树的线索化是将二叉链表中的空指针改为指向前驱或后继的线索。原创 2024-04-24 16:08:09 · 292 阅读 · 0 评论 -
学习笔记-数据结构-树与二叉树(2024-4-22)
的访问流程:1⃣️先访问当前节点的元素,然后沿着当前节点的左孩子,将元素入栈,一直循环先访问再入栈,直到左孩子为空;2⃣️栈顶元素出栈,并且判断有没有右孩子,如果没有右孩子,继续栈顶元素出栈;2⃣️若队列非空,则队头节点出队,访问该节点,若它有左孩子,则将其左孩子入对;若它有右孩子,则将其右孩子入队。的访问流程:1⃣️沿着根的左孩子,依次将元素入栈,直到左孩子为空;2⃣️栈顶元素出栈并访问,并且判断它是否有右孩子,如果右孩子为空,继续执行2;的思路分析:1⃣️沿着根的左孩子,依次入栈,直到左孩子为空。原创 2024-04-23 09:54:52 · 225 阅读 · 0 评论 -
学习笔记-数据结构-线性表(2024-04-21)
假设有两个元素值递增有序的线性表La和Lb,均以带头节点的单链表作为存储结构,编写算法将La表和Lb表合并为一个按元素值递减有序排列的线性表Lc,并要求利用原表(La和Lb表)的节点空间存放表Lc。: 在算法执行过程中,pa是一个遍历指针,用于顺序访问La链表中的节点。: 指向第二个有序单链表的头节点,该链表中的元素同样按递增顺序排列。: 指向第一个有序单链表的头节点,该链表中的元素按递增顺序排列。: 指向结果单链表的头节点,合并后的链表将按元素值递减有序排列。原创 2024-04-22 17:47:34 · 357 阅读 · 0 评论 -
学习笔记-数据结构-线性表(2024-04-18)- 单向链表选择排序
正经的单向链表选择排序!!不是别人的那种交换值的!原创 2024-04-20 21:55:42 · 570 阅读 · 0 评论 -
学习笔记-数据结构-线性表(2024-04-17)
指针变量,始终指向q节点的前一个节点。在删除q所指向的节点时,s的next将被更新为q->next,从而维持链表的连续性。在内层循环中,q从p所指向节点的下一个节点开始,遍历p之后的所有节点。它用于寻找和删除与p指向节点的data值相同的节点。- 参数变量,代表链表的头节点。在调用DelSameNum函数时,需要传递链表的头节点的地址给这个参数,从而允许函数对链表进行操作。- 指针变量,用于在链表中顺序遍历节点。在外层循环中,p从头节点开始,依次指向链表中的每一个节点,直到最后一个节点。原创 2024-04-18 17:52:16 · 277 阅读 · 1 评论 -
学习笔记-数据结构-线性表(2024-04-16)
int value;代码思想:双指针操作(快慢指针),利用p、q两个指针实现,p先走k-1步,然后p和q再同时出发,当p指向最后一个节点时,正好q指向了链表中倒数第k个节点。// 声明并初始化两个用于遍历链表的指针p=head;q=head;// 循环,目的是将p移动到正向数第k个节点的位置for(i=1;inext;// 持续遍历直到p指向成最后一个节点// p q 两个指针都向下一个节点移动。原创 2024-04-17 15:10:44 · 523 阅读 · 1 评论