leetcode链表
class ListNode:
def __init__(self, val=0, next=None):
self.val = val #val表示值
self.next = next #指针next表示后继指针
class MyLinkedList:
def __init__(self):#初始化
self.next = None
def get(self, index: int) -> int:
#获取链表中下标为 index 的节点的值。如果下标无效,则返回 -1
cur = self.head
count = 0
while cur:
count += 1
if count == index:
return cur.val
cur = cur.next #cur会停止在下表为i的那一项
return -1
#如何判断下标无效?
def addAtHead(self, val: int) -> None:
#将一个值为 val 的节点插入到链表中第一个元素之前
node = ListNode(val)
node.next = self.head
self.head = node
def addAtTail(self, val: int) -> None:
#将一个值为 val 的节点追加到链表中作为链表的最后一个元素
node = ListNode(val)
cur = self.head
while cur.next:
cur = cur.next
cur.next = node
def addAtIndex(self, index: int, val: int) -> None:
#将一个值为 val 的节点插入到链表中下标为 index 的节点之前。
#如果 index 等于链表的长度,那么该节点会被追加到链表的末尾。
#如果 index 比长度更大,该节点将 不会插入 到链表中。
count = 0
node = ListNode(val)
cur = self.head
while cur:
if count == index-1:
tmp = cur
count += 1
cur = cur.next
if count >= index:
node.next = cur.next
cur.next = node
def deleteAtIndex(self, index: int) -> None:
#如果下标有效,则删除链表中下标为 index 的节点。
#i-1的next,连到i的next
count = 0
cur = self.head
while cur and count<index-1:
count += 1
cur = cur.next
#此时的cur是i-1
cur.next = cur.next.next
# Your MyLinkedList object will be instantiated and called as such:
# obj = MyLinkedList()
# param_1 = obj.get(index)
# obj.addAtHead(val)
# obj.addAtTail(val)
# obj.addAtIndex(index,val)
# obj.deleteAtIndex(index)
G102的孤儿们都要好好的啊。

浙公网安备 33010602011771号