python对单双链表进行操作
`class LinkNode:
def init(self,val=0,next=None):
# 定义指针指向节点的数值
self.val = val
# 定义指针
self.next = None
class MyLinkedList:
def init(self):
self.head = LinkNode(0)
self.size = 0
# 获取链表中下标为index的值,如果下标无效,则返回-1
def get(self,index:int)->int:
if 0<=index<=self.size:
cur = self.head
for i in range(index+1):
cur = cur.next
# cur此时就指向get节点
return cur.val
else:
return -1
# 插入一个节点作为这个链表的第一个元素
def addAtHead(self,val:int)->None:
self.addAtIndex(0,val)
# 追加一个节点作为这个链表的最后一个元素
def addAtTail(self,val:int)->None:
self.addAtIndex(self.size,val)
# 将一个节点插入index前,若index等于链表长度,则插入到链表最后
# 若index比链表长度还大,该节点不会插入到链表中
def addAtIndex(self,index:int,val:int)->None:
if index == self.size:
self.addAtIndex(self.size,val)
if 0 <= index <= self.size:
cur = self.head
for _ in range(index):
cur = cur.next
val = LinkNode(val=val)
val.next = cur.next
cur.next = val
self.size += 1
if index > self.size:
return
# 若下标有效,则删除链表中下标为index的节点
def deleteAtIndex(self,index:int)->None:
if 0 <= index <= self.size:
cur = self.head
for _ in range(index):
cur = cur.next
cur.next = cur.next.next
self.size -= 1
`