单链表
代码语言:javascript
复制class MyLinkedList:
def __init__(self, head=None, size=0):
self.head = head
self.size = size
def get(self, index):
if index >= self.size or not self.head:
return -1
cur = self.head
while index:
cur = cur.next
index -= 1
return cur.val
def add_at_head(self, val):
self.head = ListNode(val, self.head)
self.size = 1
def add_at_tail(self, val):
if not self.head:
self.head = ListNode(val)
else:
cur = self.head
while cur.next:
cur = cur.next
cur.next = ListNode(val)
self.size = 1
def add_at_index(self, val, index):
if not index > self.size:
if index <= 0:
self.add_at_head(val)
else:
cur = self.head
while index - 1:
cur = cur.next
index -= 1
cur.next = ListNode(val, cur.next)
self.size = 1
def delete_at_index(self, index):
if index < self.size:
if not index:
self.head = self.head.next
else:
cur = self.head
while index - 1:
cur = cur.next
index -= 1
cur.next = cur.next.next
self.size -= 1