C++程序 删除链表

C++程序 删除链表

C++算法:

逐个迭代链表并删除所有节点。这里的主要问题是如果删除当前指针,则不要访问下一个指针。

实现:

// C++程序删除链表
#include <bits/stdc++.h>
using namespace std;
 
// 链表节点
class Node
{
    public:
    int data;
    Node* next;
};
 
// 删除整个链表的函数
void deleteList(Node** head_ref)
{
    // 定义head_ref获取真实头
    Node* current = *head_ref;
    Node* next = NULL;
 
    while (current != NULL)
    {
        next = current->next;
        free(current);
        current = next;
    }
 
    // 定义head_ref影响调用者中的真实头。
    *head_ref = NULL;
}
 
/* 给定一个列表的引用(指向指针)和一个int,将一个新节点添加到列表的前面。*/
void push(Node** head_ref, int new_data)
{
    // 分配节点
    Node* new_node = new Node();
 
    // 放入数据
    new_node->data = new_data;
 
    // 链接new_node的旧列表
    new_node->next = (*head_ref);
 
    // 将头移到新的节点
    (*head_ref) = new_node;
}
 
// 驱动程序
int main()
{
    // 从空列表开始
    Node* head = NULL;
 
    // 使用push()来构建列表
    // 1->12->1->4->1
    push(&head, 1);
    push(&head, 4);
    push(&head, 1);
    push(&head, 12);
    push(&head, 1);
 
    cout << "删除链表";
    deleteList(&head);
 
    cout << "已删除链表";
}
// 此代码由rathbhupendra提供```  

输出:

删除链表
已删除链表

时间复杂度: O(n)

辅助空间: O(1)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例