- 博客(16)
- 收藏
- 关注
原创 伪代码-快速排序-学习笔记
+i 和i++ ,两者都是指i=i+1,但是指向的先后顺序不一样。在赋值语句中,++i 指先指向i=i+1再执行赋值语句;同意的i++ 是先赋值,再取i=i+1。对于这个代码需要记住。
2024-11-23 18:30:35
183
原创 平衡二叉树插入节点、删除节点后如何使其平衡。
插入新的元素后,从低端开始找到和它相关的最小不平衡子树的根节点,然后从这个根节点往下在这一条链上取三个结点,调整这个三个节点的顺序,最小的写左边,最大的写右遍,中间的写上面。2.删除根节点,先把当前根节点的前驱或后继(按中序编列的方式)提到根节点后,在找到不平衡子树,按上述方式调整。1.删除叶子结点后,先找到最小不平衡子树,然后按上述方式调整。平衡因子=左子树-右子树。删除操作差不多,不过分为删除叶子结点和根结点两种方式。平衡二叉函数的定义:左右子树的高度差(平衡因子)不能超过1。
2024-11-18 15:46:49
341
原创 时间地点如何说
in 指大地点,或一个范围内, in Japan, in Shanghai , in the city, in the park。at 指小地点,或具体的某个位置,at school ,at bus stop , at Tom's hoom。on 指精确的日期,on july 7 , on monday, on Christmas Day。in 指一段较长时间,in the morning, in 2024 , in july。on 一般不用,on 指在什么之上, on the ground。
2024-11-12 21:40:34
1248
原创 串的模式匹配-kmp算法-学习笔记
当然我们也可以简化过程,让nextval[4] = nextval [2]=1。此时 代码可以写成 j = next[j-1] , 但这不是一般考试时所需要的next数组,考试时希望能把代码写成 j = next [j] , 那么我们就直接将上面的部分模式匹配数整体右移一个单位即可满足,然后把第一个空缺的位置用-1表示。nextval的优化的原理是指 当 ch[j] = ch[ next[j] ] 时,就不需要再比较了,因此可以修改next[j] = next[next [j] ] 直到不等为止。
2024-11-12 18:45:39
785
原创 c语言-链表反转-学习笔记
其实就是循环把current(当前所访问的节点)->next切断并指向前面的节点。因此我们所需要的信息有①前面一个节点的位置;②current下一个节点q的位置,这个节点是用来更新current位置的。核心是先递归到最后,再打印;如果我们先打印再递归访问到最后啥也不做,就是顺序打印链表了。递归访问到最后一个节点,打印当前位置data;再回到上一层,打印上一次data。
2024-11-04 17:37:02
439
原创 c语言-队列用链式存储-学习笔记
即:rear指针是会变动的,需要让他重新指向尾结点;front指针是不变的,它永远指向头结点。EnQueue:用队尾结点指向新的结点,然后把队尾指针指向新结点。DeQueue:用队头(头结点)结点指向出队结点的下一个结点。判断空:Head->next == NULL,就是空队。
2024-10-29 17:38:17
430
原创 c语言-指针传递、头节点、头指针-学习笔记
对于有没有头节点,我们只要能理解,知道两者的具体的插入和删除操作就可以了。核心是理解插入和删除到底是在干什么,若是直接插入一个新节点,我们会损失哪些信息,这个损失的信息就是我们要预处理的。关于链表、链式存储结构的其他数据结构中是否要有头节点的问题。其实并无定论,都可以。只不过有了头节点会更统一,并且不容易出错。另外关于链式存储结构:构造函数时 ,令* p= 头指针,然后用p来操作,代码美观一点。少用 头指针->next->next 的形式。
2024-10-28 17:38:00
105
原创 c语言-数组队列-学习笔记
要注意的是:取模时是(最大数组容量or数组的最大下标+1),若是出题数组A[0,...,n] 实际是说最大储存元素为n+1个,最大下标为n;若出题数组A[n]则实际是说最大储存元素为n个,但最大下标为n-1。例如一共7个元素位置0,1,2,3,4,5,6,注意这里front指的是队头元素下标,而rear指的是队尾的下一个元素的下标,rear=7时 ,希望rear = 0,既队列的第一个位置。rear=8时,希望rear = 1,既队列的第二个位置。这里队满的判断是以牺牲一个存储空间为代价的。
2024-10-28 16:08:46
969
原创 c语言-栈用链表实现-学习笔记
2.typedef 要写完整,不然后面会出现warnin说赋值类型不匹配。3.直接用结构体访问用点操作;用指针访问结构体用箭头操作。1.节点结构体 和 栈结构体 是不一样的。学习时发现了几个自己的错误。
2024-10-23 21:28:28
240
原创 c语言-栈用数组实现-学习笔记
栈有以下几个操作:Pop出栈、Push入栈、读取栈顶Top;下面的代码演示了数组栈的基本操作;栈的特点是:一个出口,先进后出。
2024-10-22 17:31:22
294
原创 c语言-二叉搜索树-学习笔记2
这次在上一次的基础上学习了如何找到二叉搜索树中的最大值和最小值,二叉搜索树的特点是左孩子比父节点小,右孩子比夫节点大,显然最左边的就是最小值,而最右边是最大值。写这函数的时候我会不由自主的想用递归来写,都忘了while循环了,说明c语言的基础不太好。函数:FindMin 和 FindMax 分别是用了循环和递归的方式写的。但是这里我有一个疑惑,FindMin中传入root指针居然是形参不会被真的修改,我傻了好久。这说明c语言函数中参数只有加了&符号才能变成实参吗。当前搜索二叉树中最大值为:25。
2024-10-17 21:15:35
388
原创 c语言-二叉搜索树-学习笔记1
描述:Insert函数的三个分支中第一个if是用来赋值的,其他两个分支是用来递归调用找结点的。这一次二叉搜索树主要学习了:给定一堆数值,如何把这数按二叉搜索树的形式插入。下面的代码仅仅可以运行,运行结果就是return 0;函数:Insert 和 GetNewNode。
2024-10-16 15:45:45
270
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅