使用 C++ 删除链表的最后一个节点

我们提供了一个单向链表,我们的任务是从该列表中删除最后一个节点。在这个问题中,我们将简单地遍历给定的列表并简单地删除最后一个节点。

寻找解决方案的方法

在这种方法中,我们遍历给定的列表,并跟踪前一个节点和当前节点。现在,当我们的当前节点成为最后一个节点时,我们将 previous -> next 更改为 NULL 并删除当前节点。

示例

#include <iostream>

using namespace std;

struct Node {

   int data;

   struct Node* next;

};

void push(struct Node** ref, int new_data) { // 推动节点

   struct Node* new_n = new Node;

   new_n->data = new_data;

   new_n->next = (*ref);

   (*ref) = new_n;

}

int main() {

   Node* head = NULL;

   push(&head, 12);

   push(&head, 29);

   push(&head, 11);

   push(&head, 23);

   push(&head, 8);

   auto curr = head, prev = head;

   if (!curr || !curr -> next) // 如果列表只有一个元素或列表为空

      cout << "Empty\n";

   else {

      while (curr) { // 而 curr != NULL

         if (!curr -> next) {

            prev -> next = NULL;

            delete(curr); // 释放空间

            break;

         }

         prev = curr;

         curr = curr -> next; // 移动到下一个节点

      }

   }

   for (Node* temp = head; temp != NULL; temp = temp->next) // 打印数据

      cout << temp->data << " ";

   return 0;

}

输出结果
8 23 11 29

上面代码的解释

在这种方法中,我们遍历数组,跟踪当前节点和前一个节点。现在,当我们的当前节点成为最后一个节点时,我们将 previous -> next 更改为 NULL 并删除当前节点。给定程序的总时间复杂度为O(N),其中 N 是我们给定列表的大小。

时间复杂度 - O(N)

N:我们数组的大小

结论

在本文中,我们解决了从给定链表中移除最后一个节点的问题。我们还学习了这个问题的C++程序和我们解决的完整方法。我们可以用其他语言编写相同的程序,例如 C、java、python 和其他语言。我们希望这篇文章对您有所帮助。

以上是 使用 C++ 删除链表的最后一个节点 的全部内容, 来源链接: utcz.com/z/349088.html

回到顶部