C++ 链表删除节点代码示例

以下代码示例展示了如何使用 C++ 实现链表删除节点功能,其中代码结构清晰,注释详细,易于理解。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

typedef struct node
{
    int data;
    struct node *next;
} ListNode;

typedef ListNode *LinkList;

LinkList CreatList(void);
void DeleteList(LinkList L);
void PrintList(LinkList L);

int main()
{
    LinkList head;
    head = CreatList();
    DeleteList(head);
    PrintList(head);
    return 0;
}

LinkList CreatList(void)
{
    int val;
    LinkList head, p, r;
    head = new ListNode;
    head->next = NULL;
    r = head;

    while (1)
    {
        scanf('%d', &val);
        if (val == -1)
        {
            break;
        }
        p = new ListNode;
        p->next = NULL;
        p->data = val;
        r->next = p;
        r = p;
    }

    return head;
}

void DeleteList(LinkList L)
{
    int val;
    scanf('%d', &val);
    LinkList p, r;
    p = L;

    while (p->next)
    {
        if (p->next->data == val)
        {
            r = p->next;
            p->next = p->next->next;
            delete r;
        }
        p = p->next;
    }
}

void PrintList(LinkList L)
{
    LinkList p;
    p = L->next;

    while (p)
    {
        printf('%d ', p->data);
        p = p->next;
    }
}

代码说明:

  1. 数据结构定义:

    • ListNode 结构体定义了链表中的节点,包含数据域 data 和指向下一个节点的指针 next
    • LinkList 是指向 ListNode 结构体的指针,表示链表的头指针。
  2. 函数定义:

    • CreatList() 函数用于创建链表,从输入中读取数据,并将数据插入链表中。
    • DeleteList() 函数用于删除链表中指定数据的值的节点。
    • PrintList() 函数用于打印链表中所有节点的数据。
  3. 主函数:

    • 创建一个新的链表 head
    • 调用 CreatList() 函数创建链表。
    • 调用 DeleteList() 函数删除指定数据的节点。
    • 调用 PrintList() 函数打印链表。

代码功能:

该代码实现了一个简单的链表删除节点功能,允许用户从链表中删除指定数据的值的节点。代码通过遍历链表,找到需要删除的节点,并将其从链表中移除,最终实现节点的删除。

代码优化建议:

  • 可以考虑添加错误处理机制,例如,在 DeleteList() 函数中,如果要删除的节点不存在,可以提示用户。
  • 可以使用更简洁的代码来实现链表的操作,例如使用迭代器来遍历链表。

总结:

该代码示例展示了使用 C++ 实现链表删除节点的基本步骤,为理解链表数据结构和操作提供了参考。通过进一步的优化和扩展,可以实现更多链表相关的功能,并应用于实际的编程场景中。

C++ 链表删除节点代码示例:高效实现节点删除功能

原文地址: https://www.cveoy.top/t/topic/QHb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录