21xrx.com
2024-11-05 18:32:46 Tuesday
登录
文章检索 我的文章 写文章
C++代码实现单链表的删除操作
2023-07-04 23:52:45 深夜i     --     --
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()函数,打印出了删除后的链表。

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

  
  

评论区

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