class ListNode(object):
def __init__(self, val=None, next=None):
self.val = val
self.next = next
class MyLinkedList:
def __init__(self):
self.head=ListNode(0)#虚拟头节点设置
def get(self, index: int) -> int:#获取链表中第 index 个节点的值
if index<0:
return -1
p=self.head
for i in range(0,index+1):
if p.next is None:
return -1
else:
p=p.next
return p.val
def addAtHead(self, val: int) -> None:#在链表的第一个元素之前添加一个值为 val 的节点
node=ListNode(val)
node.next=self.head.next
self.head.next=node
def addAtTail(self, val: int) -> None:#将值为 val 的节点追加到链表的最后一个元素
node=ListNode(val)
p=self.head
while p.next is not None:
p=p.next
p.next=node
def addAtIndex(self, index: int, val: int) -> None:#在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度,则该节点将附加到链表的末尾。如果 index 大于链表长度,则不会插入节点。如果index小于0,则在头部插入节点
node = ListNode(val)
p=self.head
if index<0:
node.next = self.head.next
self.head.next = node
for i in range(0,index):
if p.next is None:
p.next=node
p=p.next
node.next=p.next
p.next=node
def deleteAtIndex(self, index: int) -> None:#如果索引 index 有效,则删除链表中的第 index 个节点
p=self.head
if index<0:
return
for i in range(index):
p=p.next
if p.next is not None:
p.next=p.next.next
python 力扣707设计链表
最新推荐文章于 2024-04-25 00:13:48 发布