mirror of
https://github.com/ParkMoonJ/KaoYan.git
synced 2026-11-04 23:04:50 +08:00
Update 2 线性表.md
This commit is contained in:
@@ -111,9 +111,52 @@ char CompareAB(SqList A, SqList B) {
|
||||
|
||||
### 2.13 试写一算法在带头结点的单链表结构上实现线性表操作 `LOCATE(L, X)`。
|
||||
|
||||
```cpp
|
||||
int Locate(LinkList L, int x) {
|
||||
p = L -> next;
|
||||
int i = 1;
|
||||
while (p && p -> data != x) {
|
||||
p = p -> next;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
```
|
||||
|
||||
### 2.14 试写一算法在带头结点的单链表结构上实现线性表操作 `LENGTH(L)`。
|
||||
|
||||
### 2.15 已知指针 `ha` 和 `hb` 分别指向两个单链表的头结点,并且已知两个链表的长度分别为m和n。试写一算法将这两个链表连接在一起(即令其中一个表的首元结点连在另一个表的最后一个结点之后),假设指针hc指向连接后的链表的头结点,并要求算法以尽可能短的时间完成连接运算。请分析你的算法的时间复杂度。
|
||||
```cpp
|
||||
int Length(LinkList L) {
|
||||
p = L -> next;
|
||||
int length = 0;
|
||||
while (p) {
|
||||
p = p -> next;
|
||||
length++;
|
||||
}
|
||||
return length;
|
||||
}
|
||||
```
|
||||
|
||||
### 2.15 已知指针 `ha` 和 `hb` 分别指向两个单链表的头结点,并且已知两个链表的长度分别为m和n。试写一算法将这两个链表连接在一起(即令其中一个表的首元结点连在另一个表的最后一个结点之后),假设指针hc指向连接后的链表的头结点,并要求算法以尽可能短的时间完成连接运算。请分析你的算法的时间复杂度。
|
||||
|
||||
```cpp
|
||||
void MergeList(LinkList &a, LinkList &b, LinkList &c) {
|
||||
if (m < n) {
|
||||
length = m;
|
||||
hc = ha;
|
||||
p = ha -> next;
|
||||
q = hb -> next;
|
||||
} else {
|
||||
length = n;
|
||||
hc = hb
|
||||
p = hb -> next;
|
||||
q = ha -> next;
|
||||
}
|
||||
while (length--) {
|
||||
p = p -> next;
|
||||
}
|
||||
p = q;
|
||||
}
|
||||
```
|
||||
|
||||
### 2.16 已知指针 `la` 和 `lb` 分别指向两个无头结点单链表中的首元结点。下列算法是从表 `la` 中删除自第 `i` 个元素起共 `len` 个元素后,将它们插入到表 `lb` 中第 `j` 个元素之前。试问此算法是否正确?·若有错,则请改正之。
|
||||
|
||||
@@ -146,6 +189,10 @@ Status DeleteAndInsertSub (LinkedList la, LinkedList lb , int i, int j, int len)
|
||||
|
||||
### 2.17 试写一算法,在无头结点的动态单链表上实现线性表操作 `INSERT(L, i, b)`,并和在带头结点的动态单链表上实现相同操作的算法进行比较。
|
||||
|
||||
```cpp
|
||||
void Insert(Linklist &L)
|
||||
```
|
||||
|
||||
### 2.18 同 2.17 题要求。试写一算法,实现线性表操作 `DELETE(L, i)`。
|
||||
|
||||
### 2.19 已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一高效的算法,删除表中所有值大于 `mink` 且小于 `maxk` 的元素(若表中存在这样的元素)
|
||||
Reference in New Issue
Block a user