"""
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,
重复的结点不保留,返回链表头指针。
例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
思路:
1.先设置新的非数字类型的头结点
2.通过循环求出相同结点的值,并赋值给变量
3.再次循环链表,如结点的值和刚才赋值变量的值相同,则跳过该节点
4.最后输出新头结点的下一个结点,即原链表的头结点
"""
class Node:
def __init__(self, value):
self.value = value
self.next = None
class Solution:
def deleteDuplication(self, pHead):
new_head = Node('a')
new_head.next = pHead
pre, cur = None, new_head
while cur:
pre = cur
cur = cur.next
while cur and cur.next and cur.value == cur.next.value:
t = cur.value
while cur and t == cur.value:
cur = cur.next
pre.next = cur
return new_head.next
if __name__ == '__main__':
s = Solution()
n1 = Node(1)
n1.next = Node(2)
n1.next.next = Node(3)
n1.next.next.next = Node(3)
n1.next.next.next.next = Node(4)
n1.next.next.next.next.next = Node(4)
n1.next.next.next.next.next.next = Node(5)
result = s.deleteDuplication(n1)
while result:
print(result.value)
result = result.next
剑指offer 之删除链表中重复的节点
最新推荐文章于 2024-07-11 06:47:55 发布