步骤:
1)创建ListNode类
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
2)创建单链表类
可参考Python单链表
class SingleLinkList:
def __init__(self, node=None):
self.__head = node
def is_Empty(self):
return self.__head is None
def append(self, item): # 尾插法
node = ListNode(item)
if self.is_Empty():
self.__head = node
else:
cur = self.__head
while cur.next is not None:
cur = cur.next
cur.next = node
def find_head(self):
return self.__head
3)以 LeetCode 83.删除排序链表中的重复元素为例
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
if head is None or head.next is None:
return head
p = head
while True:
if p.val == p.next.val:
p.next = p.next.next
else:
p = p.next
if p.next is None:
break
return head
4)调用
调用方式1
ls = SingleLinkList()
data = [1, 1, 2, 3, 3]
for i in data:
ls.append(i)
print(type(ls))
mm = Solution()
res = mm.deleteDuplicates(ls.find_head())
while res:
print(res.val, end=' ')
res = res.next
调用方式2
mm = Solution()
head = ListNode(None)
cur = head
for i in [1, 1, 2, 3, 3]:
cur.next = ListNode(i)
cur = cur.next
head = head.next
print(type(head))
res = mm.deleteDuplicates(head)
while res:
print(res.val, end=' ')
res = res.next