用自定义函数实现删除单链表中第 i个位置上的元素,删除成功返回true,同时返回要删除的元素值,否则返回 false。要求: (1)操作结果(成功与否)通过函数值返回。 (2)被删除的元素值通过指针形参或引用形参返回
时间: 2023-03-24 08:01:25 浏览: 72
以下是用Python语言实现删除单链表中第i个位置上的元素,并返回操作结果和被删除的元素值的代码示例,供参考:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def remove_ith_node(head: ListNode, i: int) -> tuple:
"""
:param head: 单链表的头节点
:param i: 待删除节点的位置,从1开始计数
:return: (bool, int)类型的元组,第一个元素表示删除操作是否成功,
第二个元素表示被删除的节点的值,若操作失败,则第二个元素为None
"""
if not head or i < 1: # 非法参数判断
return False, None
if i == 1: # 删除头节点的情况
value = head.val
head = head.next
return True, value
prev_node = head
curr_node = head.next
j = 2 # 从第二个节点开始遍历
while curr_node:
if j == i: # 找到待删除节点的位置
value = curr_node.val
prev_node.next = curr_node.next
return True, value
prev_node = curr_node
curr_node = curr_node.next
j += 1
return False, None # 找不到待删除节点的情况
```
该函数接受一个单链表的头节点和待删除的节点位置i,若i合法,则遍历链表找到第i个节点,将其从链表中删除并返回True和被删除的节点值;否则,返回False和None。
示例用法:
```python
# 创建一个长度为5的单链表
node1 = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
node4 = ListNode(4)
node5 = ListNode(5)
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
# 删除第3个节点
result = remove_ith_node(node1, 3)
print(result) # 输出:(True, 3)
# 删除头节点
result = remove_ith_node(node1, 1)
print(result) # 输出:(True, 1)
# 删除位置超出链表长度的节点
result = remove_ith_node(node1, 6)
print(result) # 输出:(False, None)
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![bat](https://img-home.csdnimg.cn/images/20210720083646.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)