- 博客(22)
- 收藏
- 关注
原创 二叉树的概念
1个结点,计算公式见树的概念那一章,对满二叉树进行编号,根结点编号为1,从上至下从左往右编号,对于编号为i的结点,他的双亲结点编号为[i/2],他的左孩子结点编号为2i,他的右孩子结点编号为2i+1,注意这个规律的大前提是树是一棵满二叉树。第一条,其结点序号必须是一个接着一个的不可以跳序号,就是说树中若已经有了1-5编号结点,如果你想要树中有7号结点,必须得先有6号结点,其结点必须是从上至下从左往右出现,先有左孩子再有右孩子。第七条,判断某个结点在哪一层,对于编号为i的结点,其层数为。
2024-08-09 15:30:23
258
原创 树的基本概念
要想结点最少只需要利用树的度的定义来看就行了,至少有一个结点度为m,那我们就设置只有一个结点的度为m即可,也就是说这棵树共有h层只有一层有每个结点其余h-1层的每一层都只有一个结点。(2)度为m的树:指的是所有结点的度数都小于等于m且可以为0,但是必须至少有一个结点的度数是等于m的,所以不会出现空树的情况。(1)m叉树:指的是所有结点的度数都小于等于m且可以为0,因此m叉树可能出现空树的情况,也就是结点度数范围为[0,m]9,度为m,具有n个结点的树的最大高度(不是m叉树)为n-m+1。
2024-08-08 19:47:55
299
原创 链队列的复习
在我最后三行的注释中的问题就是我粗心没有考虑到带头结点的删除操作删除到还剩一个结点的时候需要特殊处理,因为你还剩一个结点的时候,再进行删除操作,由于front始终指向的是头结点,而rear始终指向的是元素结点,我删除掉最后一个元素结点这时rear就成了野指针,野指针指不指向任何东西的指针,他和NULL是不相等的,前面说了带头结点的链队列的判空条件为front=rear,所以我们只需要将删除最后一个结点(队列中只有一个结点)的情况进行特殊处理,当删除到最后一个结点的时候另front=rear即可。
2024-07-22 22:43:39
374
原创 循环队列复习
2,类型中增设size成员,表示元素个数,删除成功size减一,插入成功size加一,队空状态size=0,队满状态size=maxsize,两种情况都会出现rear=front。判满的话无法判断因为如果你要写rear=front判空的话,因为rear=(rear+1)%maxszie所以队列为满也会出现rear=front。3,类型中增设tag数据成员,删除成功tag=0,若导致了front=rear则为队空,插入成功tag=1,若导致了rear=front则为队满。判空:rear=front。
2024-07-22 15:01:23
246
原创 前缀,中缀,后缀表达式
从左往右进行扫描,遇到操作数直接加入后缀表达式,遇到界限符,若为(则直接入栈,若为)则依次弹出栈中的运算符并加入后缀表达式,直到弹出(为止,(直接删除不加入表达式,遇到运算符,若其优先级高于除了(之外的栈顶运算符,则直接入栈,否则从栈顶开始依次。),遇到界限符,若为)则直接入栈,渝澳)则依次弹出栈中的运算符并加入前缀表达式,直到弹出)为止,)直接删除,遇到运算符,若若其优先级高于除了)之外的运算符,则直接入栈,否则从栈顶依次。例子:A+B*(C-D)-E/F 答案为:ABCD-*+EF/-
2024-07-21 16:05:10
229
原创 队列。。。。
第三个是队空的条件,我一开始也判断错了,我一开始认为的是当rear=front=0即可,但是这个等于0其实是不需要的,为什么呢其实我们可以假设这个条件是对的,当我们rear和front位于地址下标为t的位置的时候若要进行删除操作我们会先判空,发现此时rear=front=t不满足我们假设的条件因此系统便认为这时队不为空便继续进行删除操作,但是这对吗。但是如果我传入的是结构体类型,并且传入参数的时候没有加&的话会出现问题,这样传入的参数不会对结构体中的变量进行改变。
2024-07-21 13:23:42
304
原创 栈。。。。
,分别对应着两个栈,栈0和栈1,然后我们再用一个数组来存这两个栈顶指针,由于数组的下标是从0到maxsize-1的所以当两个栈顶指针分别为-1和maxsize时两个栈为空,而当栈1的栈顶指针数字-栈0的栈顶指针数字=1时,共享栈为满,然后是链栈,链栈也就相当于限定了输入和输出的单链表,我们建立链栈的时候一般采用头插法,插入和删除都在头结点处进行,以下为可以用来测试的小程序不完整有点乱,但是够用。然后时共享栈的插入,栈0的栈顶指针先加一然后再插入,栈1的栈顶指针则是先减一然后再插入。
2024-07-19 16:14:59
145
原创 关于矩阵的秩
最近在看张宇线代基础,上面有一个概念我一直很模糊,就是如果矩阵A(m*n)的秩为n,那么矩阵列向量构成的向量组就是线性无关的,我一开始怎么也想不明白为什么,就一直揪着定义不放:线性无关就是k1a1+k2a2一直加到第n项等于0的情况下只有k1到kn都为0才满足,但是我发现怎么也联系不到矩阵的秩上面去。
2024-07-17 09:41:55
303
原创 关于齐次线性方程组以及线性无关思考
如果一个矩阵A(m*n)是线性无关的,根据线性无关的定义,n个系数K与A的n个列向量一一对应相乘要等于0的话,只有所有的系数K都为0才可以,这样我们就可以得到所有的列向量都必定不可能为0,因为如果说n个列向量中有任意一个或多个出现了为0的情况,那么对应的为0的列向量的系数就可以随便取任意数字,就不满足所有的系数都为0,也就不满足线性无关。其次,我们知道线性无关即其齐次线性方程组只有0解,怎么推的,由线性无关定义可以知道。再由齐次线性方程组式子。
2024-07-14 17:40:17
835
原创 静态链表的考点
可以看到这里的next是int型也就是下一个元素的数组下标,所以以next==-1为结束的标志,静态链表与动态链表相同,插入删除都只需要修改指针,不需要移动元素。静态链表是由数组来描述链式存储的,其结点也有数据与和指针域,与前面链表的指针域不同的是,这里的指针是结点在数组中的相对地址,也就是。,又称游标,和顺序表一样,静态链表也需要分配一块连续的内存空间。
2024-07-10 20:35:24
243
原创 循环链表的考点
1,循环单链表和单链表的区别:表中最后一个结点的指针不是NULL而是改为指向头结点,从而整个链表形成一个环我们知道在循环单链表中,表尾结点的next指针指向l头结点,那么判断循环单链表为空的条件就是表尾指针是否指向头结点命题:循环单链表中删除首元素的操作循环单链表的插入,删除算法与单链表几乎一样所不同的是若操作在表尾进行则执行的操作不同在单链表中只能从头结点往后顺序遍历整个链表,但循环链表可以从表中任意一个结点开始遍历整个链表有的时候对单链表不设置头指针而仅仅设置尾指针,使得操作效率更高
2024-07-10 20:25:53
176
原创 单链表的复习
在使用linklist定义结构体指针时,通常写成linklist l,这里的l称为结构体指针,结构体指针指向这块节点,访问这个节点写成l->data,在使用lnode定义结构体变量时,通常写lnode l;这里的l称为结构体变量,结构体变量代表的是节点本身,访问这个节点写成l.data,当然这里的代码表示带头结点的单链表,不带头结点的单链表只需将l初始化为NULL即可。增加一个头节点方便运算,接下来我们讨论的单链表皆为带头结点的。我们在创建结构体的时候往往不会逃过指针的使用,关于结构体。
2024-07-10 19:18:59
190
原创 静态顺序表的操作
删除:如果说删除第一个元素则需要移动i-1个元素,如果说删除最后一个元素,则需要 移动0个元素,平均需要移动(n-1)/2个元素。插入:如果说插入到第一个位置,需要移动n个元素,如果说插入到表尾,需要移动0 个元素,平均需要移动n/2个元素。顺序表的动态存储,存储结构依旧是顺序结构而不是链式结构,物理结构没有变化,依旧是随机存取方式,只是分配的空间大小可以在运行时决定。
2024-07-10 11:58:24
220
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人