代码在增加节点和删除节点这两块写的比较啰嗦,网上有些解题代码写的比较优美
class Node:
def __init__(self,val=None,next=None):
self.val = val
self.next = next
class MyLinkedList:
def __init__(self):
self.head = Node(-1)
self.count = 0
def addAtHead(self,val):
self.addAtIndex(-1,val)
def addAtTail(self,val):
self.addAtIndex(self.count,val)
def deleteAtIndex(self,index):
if index > self.count - 1 or index < 0:
return
if index == self.count - 1: #删除链表的最后一个节点
dummy = Node(-100,self.head)
cur = dummy
for _ in range(0,index+1):
cur = cur.next
cur.next = None
self.count -= 1
return dummy.next
else: #删除链表的中间节点
dummy = Node()
dummy.next = self.head
cur = dummy
for _ in range(0,index+1):
cur = cur.next
cur.next = cur.next.next
self.count -= 1
return dummy.next
def get(self,index):
if index < 0 or index > self.count - 1:
return -1
else:
dummy = self.head
for _ in range(0,index+1):
dummy = dummy.next
return dummy.val
def addAtIndex(self,index,val):
if index < 0:
index = 0
if index > self.count:
return
if index == self.count: #在链表末尾添加节点
dummy = Node(-100, self.head)
temp = dummy
cur = Node(val)
for _ in range(0, index + 1):
dummy = dummy.next
dummy.next = cur
self.count += 1
return temp.next
else: #在链表中间添加节点
dummy = Node(-100,self.head)
temp = dummy
cur = Node(val)
for _ in range(0, index + 1):
dummy = dummy.next
cur.next = dummy.next
dummy.next = cur
self.count += 1
return temp.next