前言
链表是python中比较重要的知识点,下面介绍下什么是链表与链表的基础使用方法
一、链表是什么?
在力扣中链表里节点的定义是这样的,包含两个内容一个是当前节点的值(默认为0),另一个是当前节点指向的下一个节点(默认是空)
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
可以创建两个节点a和b,让节点a指向节点b,可以得到一个简单的链表
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
a = ListNode(2) #创建个节点a
b = ListNode(3) #创建个节点b
a.next = b #让节点a指向节点b
print(a.val) #输出节点a的值
print(b.val) #输出节点b的值
print(a.next.val) #输出节点a的下一个节点的值
输出结果
2
3
3
二、链表的常用操作
1.反转链表
lass Solution:
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
left_head = head #让left_head 等于头节点
new_head = None #创建一个新链表
while left_head:
t = left_head.next #暂存后续节点的头节点
left_head.next = new_head #把当前头结点加入到新链表的头部以实现反转
new_head = left_head #更新一下新链表的头部
left_head = t #更新一下链表的头部
return new_head
2.依次交替合并链表
ur = head #cur new_head 分别指向链表左右两个链表的头部
while new_head:
t = new_head.next #暂存右边后续节点的头节点
new_head.next = cur.next #右边头节点指向左边头节点的下一个节点
cur.next = new_head #调整左边头节点的下一个节点,让new_head插入其中
cur = new_head.next #更新cur为左边链表的下一个节点
new_head = t #更新new_head为需要插入的新节点