vault backup: 2023-09-11 15:37:32
This commit is contained in:
11
.obsidian/workspace.json
vendored
11
.obsidian/workspace.json
vendored
@@ -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",
|
||||
|
||||
368
2.线性表/ex.md
368
2.线性表/ex.md
@@ -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.
|
||||
|
||||
|
||||
|
||||
20
3.栈、队列、数组/ex.md
Normal file
20
3.栈、队列、数组/ex.md
Normal 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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user