21xrx.com
2024-11-05 14:38:23 Tuesday
登录
文章检索 我的文章 写文章
如何在C++中删除链表节点
2023-07-05 05:30:32 深夜i     --     --
C++ 链表节点 删除

链表是一种常见的数据结构,它由多个节点组成,每个节点包含两部分,即一个数据域和一个指针域。在C++中,我们可以使用指针来操作链表。本文将介绍如何在C++中删除链表节点。

1. 单链表的删除操作

单链表中删除节点的过程需要先找到要删除的节点的前一个节点,然后将前一个节点指向要删除节点的下一个节点即可。

以下是单链表中删除操作的实现代码:


struct ListNode {

  int val;

  ListNode *next;

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

};

void deleteNode(ListNode* head, int val) {

  ListNode* pre = head;

  ListNode* cur = head->next;

  while (cur != NULL && cur->val != val)

    pre = cur;

    cur = cur->next;

  

  if (cur != NULL)

    pre->next = cur->next;

    delete cur;

  

}

其中,head表示链表的头节点,val表示要删除的节点的值。

2. 双向链表的删除操作

双向链表的删除操作需要先找到要删除的节点,然后将节点的前一个节点的next指针指向节点的后一个节点,同时将后一个节点的prev指针指向节点的前一个节点即可。

以下是双向链表中删除操作的实现代码:


struct ListNode {

  int val;

  ListNode *next;

  ListNode *prev;

  ListNode(int x) : val(x), next(NULL), prev(NULL) {}

};

void deleteNode(ListNode* head, int val) {

  ListNode* cur = head;

  while (cur != NULL && cur->val != val)

    cur = cur->next;

  

  if (cur != NULL) {

    if (cur->prev != NULL)

      cur->prev->next = cur->next;

    

    if (cur->next != NULL)

      cur->next->prev = cur->prev;

    

    delete cur;

  }

}

3. 总结

本文介绍了如何在C++中删除链表节点。在实现删除操作时,需要先找到要删除节点的前一个节点,然后将前一个节点指向要删除节点的下一个节点即可完成删除。对于双向链表,需要同时修改前一个节点的next指针和后一个节点的prev指针。通过掌握以上知识,我们可以更好地理解链表的操作,进而更好地编写高效的程序。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复