📜  链表 |设置 2(插入节点)(1)

📅  最后修改于: 2023-12-03 15:28:33.973000             🧑  作者: Mango

链表 | 插入节点

链表是一种常用的数据结构,在插入节点时需要注意一些细节。本文将介绍链表插入节点的方法,帮助程序员更好地学习和使用链表。

什么是链表

链表是一种数据结构,由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。每个节点都可以在运行时动态生成,因此链表具有灵活性和扩展性。

链表由头指针、尾指针和链表长度组成。头指针指向链表的第一个节点,尾指针指向链表的最后一个节点。链表长度代表链表中节点的个数。

插入节点

在链表中插入节点可以分为三种情况:

  1. 在链表头插入节点;
  2. 在链表尾插入节点;
  3. 在链表中间插入节点。
在链表头插入节点

在链表头插入节点非常简单,只需要将新节点的 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

以上就是链表插入节点的三种情况,希望对你有所帮助!