前排直链：
油猴脚本：[Tampermonkey](https://microsoftedge.microsoft.com/addons/detail/tampermonkey/iikmkjmpaadaobahmlepeloendndfphd?hl=zh-CN) [下载](https://mybox-1257251314.cos.ap-chengdu.myqcloud.com/www/scripts/%E6%B2%B9%E7%8C%B4.crx)
划词脚本：[魔改题海划词+ChatGPT](https://mybox-1257251314.cos.ap-chengdu.myqcloud.com/www/scripts/%E5%88%92%E8%AF%8D%2BChatGPT%E8%84%9A%E6%9C%AC.js)
自动搜题答题：[全平台自动答题脚本](https://www.userscript.zone/search?utm_source=tm.net&utm_medium=search&q=全平台自动答题脚本)
自动学习课程：[OCS 网课助手 ](https://greasyfork.org/zh-CN/scripts/457151-ocs-网课助手)
超星万能 签到：Github自行查找 (防止太多人不去上课了影响到我的操作❤)
程序段的功能是将L1,L2中长的链表连接在短的链表后一起，主要操作时间花费在查找短表的终端结点上，所以本算的法时间复杂度为O(min(m,))

选择题a,e,d,f,c,b
选择题3 4 6 5 2 1
选择题4 3 1 2 5

23 49 76 58 34 42 80 95
49 76 58 80 95
23 42 34 49 58 76 95 80
76 58 49 95 40

8 0 4 5 64 46 2.5

4 30 53

A-B(6) C-G(6) E-F(7) C-D(8) 49

简答题(共4题;共29.0分)
1.给定二叉树T，假设n0为T中叶子节点数，n2为T中度为2的节点数，试证明n0=n2+1。 (6.0分)泰考含案
证明:设 n1为二叉树T中度为1的结点数，n 为总结点数则n=n0+n1+n2(1)再看分支数，除根结点外，每个顶点都对应一个分支数即n-1=n1+2"n2(2)有(1)和(2)可得 n0=n2+1
4.设计一个算法，通过遍历一趟，将单链表中所有结点的链接方向逆转，仍利用原链表的存储空间。
```
void inverse(LinkList &L) (
// 逆置带头结点的单链表L
	p=L->next; L->next=NULL:
	while ( P)(
		q=P->next;//q指向p的后继
		P->next=L->next:
		L->next=p; //p 插入在头结点之后
		P=q;
	}
}
```

p p=p->lchild p=p->rchild

Q.front == Q.rear 
Q.front == (Q.rear+1)%M

填空题 7
LA->data[i]<LB->data[j]
i<A->length
j<B->length
LC->length=k

填空题 8
true   BST->left   BST->right



二分查找思路:要求线性表中的元素必须己按关键字值有序(递增或递减)排列。围绕选取和对比中间位置元素的关键词而进行。
```
int binarySearch(SeqList L, int Key) {
    int low = 0;
    int high = L.length - 1;
    while (low <= high) { // 当 low>high 时搜索结束
        int mid = (low + high) / 2;
        if (L.elem[mid] == Key) { // 找到关键字
            return mid;
        } else if (L.elem[mid] < Key) { // 在右半部分继续查找
            low = mid + 1;
        } else { // 在左半部分继续查找
            high = mid - 1;
        }
    }
    return -1; // 没有找到关键字
}
```
3.设待排序的关键字序列为(12，2,1，30281016*，20618),试分别写出使用希尔排序(增量选取 5,3，1)和快速排序 (6.0分)方法，每趟排序结束后关键字序列的状态
参考答案
希尔排序 (增量选取 5，3，1)
10 2 16 6 18 12 16* 20 30 28(增量选取5)
6 2 12 10 18 16 16* 20 30 28(增量选取3)
2 6 10 12 16 16* 18 20 28 30(增量选取1）
快速排序:
12 [6 2 10] 12 [28 30 16* 20 16 18]
6 [2] 6 [10] 12 [28 30 16* 20 16 18]
28 2 6 10 12 [18 16 16* 20]28 [30]
18 2 6 10 12 [16* 16] 18 [20] 28 30
16* 2 6 10 12 16*[16] 18 20 28 30
左子序列递归深度为 1，右子序列递归深度为 3

```
typedef char ElemType;

// 定义链表结构体
typedef struct LNode {
    ElemType data;
    struct LNode *next;
} LNode, *LinkNode;

// 删除与给定值相等的元素
int LinkChange(LinkNode *L, ElemType x) {
    LinkNode p = *L, q = NULL;
    int flag = 0;
    while (p != NULL) {
        if (p->data == x) {
            if (q == NULL) {
                *L = p->next;
            } else {
                q->next = p->next;
            }
            LinkNode temp = p;
            p = p->next;
            free(temp);
            flag = 1;
        } else {
            q = p;
            p = p->next;
        }
    }
    return flag;
}
```