21xrx.com
2025-03-31 18:07:04 Monday
文章检索 我的文章 写文章
C++代码:单链表删除操作
2023-07-01 19:40:27 深夜i     13     0
C++ 代码 单链表 删除操作

单链表是一种常见的数据结构,它可以用来存储各种类型的数据。在单链表中,每个节点都存储了自己的值以及指向下一个节点的指针。删除节点是链表中最常见的操作之一,因为当我们需要对链表进行修改时,一般都会涉及到删除操作。在本文中,我们将介绍如何使用C++编写单链表的删除操作。

在C++中实现单链表的基本操作之一是在链表中删除节点。通常我们需要遍历整个链表,找到需要删除的节点,然后将该节点从链表中删除。下面是一个简单的C++程序,该程序可以删除单链表中指定位置的节点。

#include <iostream>
struct ListNode {
  int val;
  ListNode *next;
  ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
  ListNode* removeNthFromEnd(ListNode* head, int n) {
    if (!head)
      return head;
    
    ListNode* prev = NULL;
    ListNode* curr = head;
    for (int i = 0; i < n; i++)
      curr = curr->next;
    
    while (curr) {
      prev = prev ? prev->next : head;
      curr = curr->next;
    }
    if (!prev)
      head = head->next;
     else
      prev->next = prev->next->next;
    
    return head;
  }
};
void printList(ListNode* head) {
  ListNode* curr = head;
  while (curr)
    std::cout << curr->val << " ";
    curr = curr->next;
  
}
int main() {
  ListNode* head = new ListNode(1);
  head->next = new ListNode(2);
  head->next->next = new ListNode(3);
  head->next->next->next = new ListNode(4);
  head->next->next->next->next = new ListNode(5);
  Solution solution;
  head = solution.removeNthFromEnd(head, 2);
  printList(head);
  return 0;
}

该程序定义了一个结构体ListNode,用于存储节点的数值和指向下一个节点的指针。同时,程序还实现了一个名为removeNthFromEnd的函数,该函数接受一个指向链表头部的指针以及需要删除的节点的位置,然后使用两个指针prev和curr来遍历链表,找到需要删除的节点,最后将该节点从链表中删除。

我们在main函数中创建了一个长度为5的链表,并调用removeNthFromEnd函数删除该链表中的倒数第二个节点。最后,我们调用printList函数打印链表中剩余节点的值,从而证明我们成功地从单链表中删除了指定节点。

在这篇文章中,我们介绍了如何使用C++编写单链表的删除操作。本文中的程序演示了如何遍历链表并找到需要删除的节点,然后将该节点从链表中删除。这是一种常见的链表操作,如果您学会了这种操作,就能够更好地利用C++编写高效的程序。

  
  

评论区

请求出错了