📜  删除链表的第一个节点(1)

📅  最后修改于: 2023-12-03 14:50:21.303000             🧑  作者: Mango

删除链表的第一个节点

在链表数据结构中,删除第一个节点是一个常见的操作。本文将介绍在单链表和双向链表中如何删除第一个节点。

单链表

单链表是一种每个节点指向下一个节点的链表数据结构。删除第一个节点需要进行以下步骤:

  1. 保存链表头节点的指针。
  2. 修改链表头节点指针为第二个节点。
  3. 释放原链表头节点的内存空间。

如下是实现删除单链表第一个节点的C++代码:

struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};

ListNode* deleteFirstNode(ListNode* head) {
    ListNode* temp = head;
    head = head->next;
    delete temp;
    return head;
}

代码中,我们使用temp指针保存头节点,然后将head指向第二个节点,最后释放temp指向的内存空间。

双向链表

双向链表是一种节点包含前后指针信息的链表数据结构。删除第一个节点需要进行以下步骤:

  1. 保存链表头节点的指针。
  2. 修改链表头节点指针为第二个节点,并将新的链表头节点的前向指针设为NULL。
  3. 释放原链表头节点的内存空间。

如下是实现删除双向链表第一个节点的C++代码:

struct DoublyListNode {
    int val;
    DoublyListNode *prev;
    DoublyListNode *next;
    DoublyListNode(int x) : val(x), prev(NULL), next(NULL) {}
};

DoublyListNode* deleteFirstNode(DoublyListNode* head) {
    DoublyListNode* temp = head;
    head = head->next;
    head->prev = NULL;
    delete temp;
    return head;
}

代码中,我们使用temp指针保存头节点,然后将head指向第二个节点,最后将新的链表头节点的前向指针设为NULL,最后释放temp指向的内存空间。

总之,删除链表的第一个节点是一个常见的操作,需要注意指针的修改和内存释放。