【问题描述】在带头结点的单链表L中,删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一,编写算法实现上述操作。 【输入形式】 三行数据: 第一行:链表中元素个数n 第二行:n个数据,数据之间用空格分隔 第三行:待删除的数据 【输出形式】 输出后的单链表 【样例输入】 10 12 2 31 5 8 2 9 2 9 2 2 【样例输出】 12 31 5 8 9 9
时间: 2023-05-30 17:02:49 浏览: 89
对给定的链表 L ,设计一个算法,删除 L 中值为 x 的结点的直接前驱结点。删除结点.cpp
```python
class LNode:
def __init__(self, x=None):
self.data = x
self.next = None
def createList(n, lst):
head = LNode()
tmp = head
for i in range(n):
new_node = LNode(lst[i])
tmp.next = new_node
tmp = new_node
return head
def removeNode(head, x):
if head == None:
return None
p = head.next
pre = head
while p != None:
if p.data == x:
pre.next = p.next
p = pre.next
else:
pre = p
p = p.next
return head
n = int(input())
lst = list(map(int, input().split()))
x = int(input())
head = createList(n, lst)
head = removeNode(head, x)
p = head.next
while p != None:
print(p.data, end=' ')
p = p.next
```
阅读全文