📅  最后修改于: 2023-12-03 15:28:33.973000             🧑  作者: Mango
链表是一种常用的数据结构,在插入节点时需要注意一些细节。本文将介绍链表插入节点的方法,帮助程序员更好地学习和使用链表。
链表是一种数据结构,由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。每个节点都可以在运行时动态生成,因此链表具有灵活性和扩展性。
链表由头指针、尾指针和链表长度组成。头指针指向链表的第一个节点,尾指针指向链表的最后一个节点。链表长度代表链表中节点的个数。
在链表中插入节点可以分为三种情况:
在链表头插入节点非常简单,只需要将新节点的 next 指针指向原头指针所指向的节点,然后将头指针指向新节点即可。
代码如下:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def insertNodeAtHead(head, val):
node = ListNode(val)
node.next = head
head = node
return head
在链表尾插入节点也比较容易,只需要遍历到链表的最后一个节点,然后将新节点插入即可。
代码如下:
def insertNodeAtTail(head, val):
if not head:
head = ListNode(val)
else:
cur = head
while cur.next:
cur = cur.next
cur.next = ListNode(val)
return head
在链表中间插入节点稍微有些麻烦。首先需要找到插入位置的前一个节点,然后将新节点插入到该位置。
代码如下:
def insertNodeInMiddle(head, val, pos):
if pos == 0:
head = insertNodeAtHead(head, val)
else:
i = 0
cur = head
while i < pos-1 and cur:
cur = cur.next
i += 1
if not cur:
return None
node = ListNode(val)
node.next = cur.next
cur.next = node
return head
以上就是链表插入节点的三种情况,希望对你有所帮助!