21xrx.com
2024-12-22 22:32:03 Sunday
登录
文章检索 我的文章 写文章
C++代码:单链表删除操作
2023-07-01 19:40:27 深夜i     --     --
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++编写高效的程序。

  
  

评论区

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