vault backup: 2023-09-11 15:37:32

This commit is contained in:
胡楠
2023-09-11 15:37:32 +08:00
parent c75c9995b7
commit a20f78d442
3 changed files with 390 additions and 9 deletions

View File

@@ -13,7 +13,7 @@
"state": {
"type": "markdown",
"state": {
"file": "2.线性表/ex.md",
"file": "3.栈、队列、数组/ex.md",
"mode": "source",
"backlinks": true,
"source": false
@@ -86,7 +86,7 @@
"state": {
"type": "backlink",
"state": {
"file": "2.线性表/ex.md",
"file": "3.栈、队列、数组/ex.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
@@ -103,7 +103,7 @@
"state": {
"type": "outgoing-link",
"state": {
"file": "2.线性表/ex.md",
"file": "3.栈、队列、数组/ex.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
}
@@ -126,7 +126,7 @@
"state": {
"type": "outline",
"state": {
"file": "2.线性表/ex.md"
"file": "3.栈、队列、数组/ex.md"
}
}
},
@@ -161,8 +161,9 @@
},
"active": "90587f11c8ede650",
"lastOpenFiles": [
"未命名.canvas",
"2.线性表/ex.md",
"3.栈、队列、数组/ex.md",
"未命名.canvas",
"2.线性表/线性表.md",
"1.绪论/ex.md",
"树/树.md",

View File

@@ -1,10 +1,10 @@
ls2.1.3 P12
### 2.1.3 P12
1. 数据元素
2. B
3. 只有一个前驱元素
2.2.3 P16
### 2.2.3 P16
选择
1. A 密度大
@@ -266,7 +266,7 @@ void Converse(int R[], int n ,int p )
```
2.3.7
### 2.3.7 P35
1. B
2. B
@@ -277,4 +277,364 @@ void Converse(int R[], int n ,int p )
7. B x D
8. A x C
9. C
10.
10. B
11. B A
12. C
13. B x D
14. A
15. D x B
16. D
17. D
18. A
19. C
20. B x C
21. D x C
22. D x B
23. D
24. D
25. D
26. B x D
二.应用
1. 递归删除不带头节点L中x
```c
Del_x(Linklist &L,ElemType x)
{
LNode *p;
if (L == NULL)
return ;
if (L->data == x )
{
p=L;
L = L->next;
free(p);
Del_x(L.x);
}
else
Del_x(L->next,x);
}
```
O(n) O(n)
2. 带头节点L删除X释放空间
```c
void Del_x(Linklist &L, ElemType x)
{
LNode *p = L->next, *pre=L ,*q;
while( p != NULL )
{
if ( p->data == x)
{
q = p;
p = p->next;
pre->next = p;
free(q);
}
else
{
pre = p;
p = p->next;
}
}
}
```
3. L带头节点,请反向输出
```c
void Print_next_node(Linklist L)
{
if ( L->next != NULL)
Print_next_node(L->next);
if(L != NULL ) print(L->data);
}
void Print_ignore_head(Linklist L)
{
if ( L->next != NULL)
Print)next_node(L->next);
}
///
void posh_stack(LinkList L)
{
stack *p_stack;
LNode *p = L->next, *pre=L;
while( p != NULL )
{
posh(P_stack,p);
p = p->next
}
which(s != null )
pop(p_stack,s)
print(s)
}
```
4. L 删除最小
```c
void del_min(Linklist &L)
{
LNode *p = L->next, *pre = L;
Lnode *min = L->next, *min_pre = L;
while( p != NULl)
{
if( p->data < min->data)
{
min = p;
min_pre = pre;
}
pre = p;
p = p->next;
}
//del
min_pre->next = min->next;
free(min);
return L;
}
```
时间O(n) 空间O(1)
5. 头节点 逆置 辅助空间O(1)
```c
//头插法
void Rev_Link(Linklist &L)
{
LNode *p, *q;
p = L->next;
L->next = NULL;
while( p != NNULL)
{
q = p->next;
p->next = L->next;
L->next = p
p = q;
}
return L;
}
//
Linklinst Reverse_2(Linklist L)
{
// 3个点遍历反转。
}
```
6. 头节点,递增 ???
```c
void Sort_list(Linklist &L)
{
LNode *p=L->next,*pre;
LNode *r=p->next;
p->next=NULL; //当个先
p = r;
while(p != NULL )
{
r = p->next;
pre = L ;
while ( pre->next != NULL && pre->next->data < p->data)
pre = pre->next;
p->next = pre->next;
pre->next = p ;
p = r ;
}
}
```
7. 无序 删除范围
```c
void Del_x_y(Linklist &L,int min, int max)
{
LNode *p=L->next,*pre = L,q;
while(p != NULL)
{
if( p->data > min && p->data < max )
{
pre->next = p->next;
free(p);
p = p->next;
}
else
{
pre = p;
p = p->next;
}
}
}
```
8. 找出2个链表的公共节点
成Y型AB长度,然后A—B开始同步。
```c
Linklist Search_common(Linklist A,Linklist B)
{
int len_A=Length(A),len_B=Length(B1);
int dist;
Linklist Longlist,Sortlist;
if(len_A > len_B)
{
longlist=A->next;
sortlist=B->next;
dist=len_A-len_B;
}
else
{
longlist=B->next;
sortlist=A->next;
dist=len_B-len_A;
}
while(dist--)
longlist=longlist->next;
while(longlist != NULL)
{
if(longlist == shortlist)
return longlist;
else
{
longlist = longlist->next;
sortlist = sortlist->next;
}
}
return NULL;
}
```
9. L min最小
```c
void free_min_to_max(Linklist &head)
{
LNode *p,*pre,*u;
if( head->next != NULL){
pre=head;
p=pre->next;
while(p->next!=NULL)
{ if(p->next->data < pre->next->data)
pre=p
p=p->next;
}
print(pre->next->data)
u=pre->next;
pre->next=u->next;
free(u);
}
free(head);
}
```
10. A-> A奇数和B偶数
```c
Linklist DisCreat(Linklist A)
{
int i=0;
Linklist B = (Linklist)maclloc(sizeof(LNode));
B->next=NULL;
LNode *ra=A,*rb=B;*p;
p=A->next;
A->next=NULL;
while(p!=NULL)
{
i++;
if(i%2 == 0)
{
rb->next=p;
rb=p;
}
else
{
ra->next=p;
ra=p;
}
p=p->next;
}
ra->next=NULL;
rb->next=NULL;
return B;
}
```
11. {a1,b1,a2,b2,a3,b3....} -> {a1,a2,a3,...}、{bn,bn-1,bn-2,...,b2,b1}
一个头插法一个尾插法
12. 递增有序,删除重复。
释放后面一个相同的,或者尾插法。
13. 2个递增线性表何为一个需要递减。
头插法。比较时间O(mn)
14. AB,递增。-> C 公共元素。
15. 与14一样
16. B 是否是 A 的子
17. 双循环是否对称
p<->q
18. 合并循环指针.
找尾,交叉合并就行
19. 找最小删除。
20.
21. 环,判断
快指针与慢指针。
22. 查找倒数第k个
2个指针相隔k个同时运行。
```c
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *link;
}LNode, *Linklist;
int search_k(Linklist list, int k)
{
LNode *p=list->link,*q=list->list;
int count=0;
while(p!=NULL)
{
if(count<k)
count++;
else
q=q->link;
p=p->link;
}
if(count<k)
return 0;
else
{
printf("%d",q->data);
return 1;
}
}
```
23. 共同后缀起始位置。
先求长度。尾对齐,再同步指针对比。
O(n) O(1)
24.
25.

View File

@@ -0,0 +1,20 @@
### 3.1.4 P64
1. A
2. A
3. B
4. C
5. A
6. A
7. D
8. D
9. D
10. A
11. C
12. D
13. D
14. D
15. D
16. C
17.