已知指针LA和LB分别指向两个无头结点单链表的首元结点。要求编一算法实现,从表LA中删除自第i个元素起共len个元素后,将它们插入到表LB中第j个元素之前。
时间: 2024-03-03 21:53:44 浏览: 29
可以按照以下步骤编写算法:
1. 用p和q分别指向LA的第i-1个元素和LB的第j-1个元素;
2. 用r指向表LA的第i个元素;
3. 将p的next指针指向r的后面第len个元素,即LA中要删除的那些元素的下一个元素;
4. 将r的指针保存到temp中,然后将r的next指针指向q的后面,即r插入到LB中第j个元素之前;
5. 将q的next指针指向temp,即将LA中删除的那些元素插入到LB中第j个元素之前。
下面是具体的实现代码:
```python
def delete_and_insert(LA, LB, i, j, length):
# 用p和q分别指向LA的第i-1个元素和LB的第j-1个元素
p = LA
for k in range(i-1):
p = p.next
q = LB
for k in range(j-1):
q = q.next
# 用r指向表LA的第i个元素
r = p.next
# 将p的next指针指向r的后面第len个元素
for k in range(length):
r = r.next
p.next = r
# 将r插入到LB中第j个元素之前
temp = r.next
r.next = q.next
q.next = r
# 将LA中删除的那些元素插入到LB中第j个元素之前
while r.next != temp:
r = r.next
q = q.next
q.next = r
q = q.next
q.next = temp
```
其中,变量p和q初始化为LA和LB的首元结点,分别通过循环找到第i-1和第j-1个元素。变量r初始化为p的下一个元素,即第i个元素。接下来,通过循环将r指向要删除的那些元素的下一个元素,然后将p的next指针指向r的后面第len个元素。将r插入到LB中第j个元素之前,需要用temp保存r的指针,然后将r的next指针指向q的后面,即r插入到LB中第j个元素之前。最后,通过循环将LA中删除的那些元素插入到LB中第j个元素之前。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![text/x-c++](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)