设有一个带头结点的单向链表,要求:在此链表中查找值为x的节点,若找到该节点则将其在链表中删除,若未找到则将其放到该链表的最后位置。
时间: 2023-04-25 20:04:00 浏览: 89
可以按照以下步骤实现:
1. 从头结点开始遍历链表,查找值为x的节点。
2. 若找到该节点,则将其从链表中删除。
3. 若未找到该节点,则继续遍历链表,直到遍历到链表的最后一个节点。
4. 将值为x的节点插入到链表的最后位置。
具体实现可以参考以下代码:
```python
# 定义链表节点类
class ListNode:
def __init__(self, val=, next=None):
self.val = val
self.next = next
# 定义链表类
class LinkedList:
def __init__(self):
self.head = ListNode() # 头结点
# 查找值为x的节点并删除
def delete_node(self, x):
prev = self.head
curr = self.head.next
while curr:
if curr.val == x:
prev.next = curr.next
return
prev = curr
curr = curr.next
# 将值为x的节点插入到链表的最后位置
def insert_node(self, x):
prev = self.head
curr = self.head.next
while curr:
prev = curr
curr = curr.next
prev.next = ListNode(x)
# 打印链表
def print_list(self):
curr = self.head.next
while curr:
print(curr.val, end=' ')
curr = curr.next
print()
# 测试代码
if __name__ == '__main__':
# 创建链表
linked_list = LinkedList()
# 插入节点
linked_list.insert_node(1)
linked_list.insert_node(2)
linked_list.insert_node(3)
linked_list.insert_node(4)
# 打印链表
linked_list.print_list() # 输出:1 2 3 4
# 删除节点
linked_list.delete_node(3)
# 打印链表
linked_list.print_list() # 输出:1 2 4
# 插入节点
linked_list.insert_node(5)
# 打印链表
linked_list.print_list() # 输出:1 2 4 5
```