21xrx.com
2024-12-22 21:57:10 Sunday
登录
文章检索 我的文章 写文章
C++ 单链表删除操作示例代码
2023-07-04 07:55:14 深夜i     --     --
C++ 单链表 删除操作 示例代码

单链表是一种常见的数据结构,它由节点一次串联构成,因此删除单链表中的节点需要将被删除节点的前一个节点的 next 指针指向被删除节点的后一个节点,从而实现删除操作。

以下是使用 C++ 语言实现单链表删除操作的示例代码:


#include <iostream>

using namespace std;

struct Node {

  int val;

  Node *next;

};

Node *deleteNode(Node *head, int val) {

  if (head == nullptr)

    return nullptr;

  

  if (head->val == val) {

    Node *tmp = head->next;

    delete head;

    return tmp;

  }

  Node *cur = head;

  while (cur->next != nullptr && cur->next->val != val)

    cur = cur->next;

  

  if (cur->next != nullptr) {

    Node *tmp = cur->next;

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

    delete tmp;

  }

  return head;

}

void printList(Node *head) {

  for (Node *cur = head; cur != nullptr; cur = cur->next)

    cout << cur->val << " ";

  

  cout << endl;

}

int main() {

  Node *head = new Node{1, new Node{2, new Node3}};

  printList(head);

  head = deleteNode(head, 2);

  printList(head);

  head = deleteNode(head, 1);

  printList(head);

  head = deleteNode(head, 4);

  printList(head);

  return 0;

}

在这个示例代码中,我们定义了一个 Node 结构体表示单链表的节点,其中包含一个整型 val 表示节点的值,和一个指向下一个节点的指针 next。我们还定义了一个函数 deleteNode,它接收一个指向头节点的指针 head 和要删除的节点的值 val 作为参数,返回删除节点后的链表头节点指针。

在 deleteNode 函数中,我们首先判断 head 是否为空,若为空则直接返回 nullptr。若头节点的值等于 val,则删除头节点,并返回头节点的 next 指针。否则,我们从头节点遍历链表,找到要删除节点的前一个节点,将前一个节点的 next 指针指向要删除节点的下一个节点,从而实现删除操作。如果遍历完链表后没有找到要删除的节点,则不做任何操作,返回原链表头节点指针。

最后,我们写一个辅助函数 printList,打印链表中的所有节点值,并在主函数中演示如何使用 deleteNode 函数删除指定节点。我们创建一个包含三个节点的链表,删除其中的节点,观察删除操作是否生效。

单链表删除操作是常见的编程问题,掌握其思想及实现方式,对于提高编程水平和应用能力都具有重要的作用。

  
  

评论区

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