移除链表元素
1.虚拟头节点
2.解法
def removeElements(head,val):
virtualhead = LinkNode(0, head) # 构造虚拟节点
cur = virtualhead # 一个临时指针
while cur.next != None: # 当cur不是最后一个节点时
if cur.next.val == val:
cur.next = cur.next.next
else:
cur = cur.next
return virtualhead.next # 注意要返回virtualhead.next而不是head
3.总结
算法
- 链表节点的定义
class LinkNode:
def __init__(self,val=0,next=None):
self.val = val
self.next = next
- 返回值:使用虚拟节点的话,要返回 virtualhead.next 而不是 head
- 判断:判断值是否相等时,要判断cur.next.val而不是cur.val,因为这样判断如果相等的话,方便删除cur.next