python对单双链表进行操作

发布时间 2023-08-06 23:14:17作者: 静看碗里浮沉

`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








`