21xrx.com
2025-04-09 00:12:41 Wednesday
文章检索 我的文章 写文章
C++代码实现单链表的删除操作
2023-07-04 23:52:45 深夜i     30     0
C++ 单链表 删除操作

单链表是一种常用的数据结构,它由若干个节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。在实际应用中,我们经常需要对单链表进行删除操作,下面介绍一下C++代码实现单链表的删除操作。

首先,我们需要定义一个节点的结构体,包含数据元素和指针两个成员变量:

struct Node {
  int data;
  Node* next;
};

然后,我们可以定义一个链表类,其中包含一个头指针和相应的操作函数,其中deleteNode()函数实现了删除指定节点的功能:

class LinkedList {
public:
  LinkedList(): head(nullptr) {}
  ~LinkedList() {
    Node* curr = head;
    while (curr != nullptr) {
      Node* temp = curr;
      curr = curr->next;
      delete temp;
    }
  }
  void deleteNode(int val) {
    Node* curr = head;
    Node* prev = nullptr;
    while (curr != nullptr && curr->data != val)
      prev = curr;
      curr = curr->next;
    
    if (curr == nullptr) return;
    if (prev == nullptr)
      head = curr->next;
     else
      prev->next = curr->next;
    
    delete curr;
  }
private:
  Node* head;
};

在deleteNode()函数中,我们首先需要遍历链表,找到值为val的节点。如果找不到,直接返回;否则,我们需要判断要删除的节点是头节点还是中间节点,分别采用不同的方式进行删除操作。最后,我们需要释放掉要删除的节点的空间。

下面给一个具体的实现例子:

int main() {
  LinkedList list;
  list.insert(1);
  list.insert(2);
  list.insert(3);
  list.insert(4);
  list.insert(5);
  list.deleteNode(3);
  list.print();
  return 0;
}

在这个例子中,我们首先创建了一个链表实例,并依次插入了一些节点。然后,我们调用了deleteNode()函数,删除了值为3的节点。最后,我们调用print()函数,打印出了删除后的链表。

单链表的删除操作是链表中常见的操作之一,需要注意的是,我们需要好好掌握该操作,并且需要考虑头节点和中间节点两种情况,并且释放节点空间。

  
  

评论区

请求出错了