C++ 数据结构链表的实现代码

当使用C++编程语言时,链表是一种经常用到的数据结构。在这里,我将为大家提供一份完整的C++代码示例,以帮助大家在实践中轻松理解如何实现链表。

链表定义

首先,我们需要定义链表数据结构的类。这个类将包含链表节点的定义和初始化方法。

class Node
{
public:
    int data; 
    Node* next; 

    Node(int data) : data(data), next(NULL) {}; 
};

class LinkedList
{
public:
    Node* head; 

    LinkedList() : head(NULL) {};
};

这个代码中我们定义了一个链表和一个链表节点类。链表类包含了一个指向链表头节点的指针。

添加节点到链表

接下来,我们将看到如何往链表中添加节点。我们将定义一个名为addNode的方法,用于将新节点添加到链表尾部。

void addNode(LinkedList& list, int data)
{
    Node* newNode = new Node(data);

    if (list.head == NULL)
    {
        list.head = newNode;
    }
    else
    {
        Node* currentNode = list.head;
        while (currentNode->next != NULL)
        {
            currentNode = currentNode->next;
        }
        currentNode->next = newNode;
    }
}

这个方法首先创建一个新的节点,然后检查链表是否为空。如果链表为空,我们就将新节点设置为链表头。如果链表不为空,我们就遍历链表直到找到最后一个节点,然后将新节点添加到它的尾部。

从链表中删除节点

现在,我们需要实现一个方法,用于从链表中删除节点。我们将定义一个名为deleteNode的方法,用于接收一个数据值并从链表中删除它所在的节点。

void deleteNode(LinkedList &list, int data)
{
    if (list.head == NULL)
    {
        return;
    }

    Node* currentNode = list.head;
    Node* previousNode = NULL;

    while (currentNode != NULL)
    {
        if (currentNode->data == data)
        {
            if (currentNode == list.head)
            {
                list.head = currentNode->next;
            }
            else
            {
                previousNode->next = currentNode->next;
            }

            delete currentNode;
            return;
        }

        previousNode = currentNode;
        currentNode = currentNode->next;
    }
}

这个方法首先检查链表是否为空。如果链表为空,它将什么都不做。否则,它将遍历链表,在节点值与删除数据相同时从链表中删除节点。

示例1:向链表中添加节点

下面是一个示例代码,用于展示如何向早先定义好的链表对象中添加节点。

LinkedList list;

addNode(list, 1);
addNode(list, 2);
addNode(list, 3);

这个代码片段将创建一个新的空链表,并分别添加数据为1、2、3的节点。

示例2:从链表中删除节点

以下是一个示例代码,用于展示如何从早先定义好的链表对象中删除节点。

LinkedList list;

addNode(list, 1);
addNode(list, 2);
addNode(list, 3);

deleteNode(list, 2);

这个代码片段将创建一个新的空链表,分别添加数据为1、2、3的节点,然后删除数据为2的节点。

至此,我们已经讲解了如何使用C++实现链表的简单增删操作。在实践中,链表还有更多高级操作用于支持算法应用。如果您对于这些操作感兴趣,我建议您继续学习链表的其他知识点以更深入的理解链表数据结构。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ 数据结构链表的实现代码 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • django admin后管定制-显示字段的实例

    当我们在使用Django开发Web应用时,会使用到Django admin作为管理后台。但是Django admin默认情况下只显示了一些基本字段,有时我们需要定制显示哪些字段以及字段的顺序,本文将为你详细讲解Django admin后管定制-显示字段的实例。 Django admin显示字段默认值 首先,我们需要了解在Django admin中,每个Mod…

    other 2023年6月25日
    00
  • Win11刷新怎么设置为右键菜单的首选?

    要将Win11刷新设置为右键菜单的首选,需要进行以下步骤: 打开注册表编辑器: 按下Win + R键组合,输入regedit并回车,以启动注册表编辑器。 导航到右键菜单项所在的注册表分支: 在注册表编辑器中,使用左侧的目录导航器导航到以下路径: HKEY_CLASSES_ROOT\Directory\Background\shell 此处的“Director…

    other 2023年6月27日
    00
  • 关于gitversion主线:gitversion主线-每次推送的版本增量

    以下是关于GitVersion主线每次推送的版本增量的完整攻略,包括基本知识和两个示例说明。 基本知识 GitVersion是一个自动版本控制工具,它可以根据Git提交历史记录自动计算版本号。GitVersion主线是GitVersion的主要分支,它包含了GitVersion的最新功能和修复的错误。 在GitVersion主线中,每次推送都会增加版本号。G…

    other 2023年5月7日
    00
  • win10系统下word2010文档怎样添加绘图

    Win10系统下Word2010文档添加绘图的完整攻略 Microsoft Word是一款常用的文字处理软件,它不仅可以处理文字,还可以添加各种图形和绘图。本文将提供一个完整攻略,介绍Win10系统下Word2010文档添加绘图的方法,并提供两个示例说明。 添加绘图 在Word2010中添加绘图通常包括以下步骤: 步骤1:打开Word 在Windows 10…

    other 2023年5月8日
    00
  • C++ 中动态链接库–导入和导出的实例详解

    C++ 中动态链接库–导入和导出的实例详解 动态链接库 动态链接库(Dynamic Link Library,简称 DLL)是一种共享库,可以在多个不同的应用程序中被使用,从而达到代码共享与节约程序的空间资源的目的。在C/C++ 中,链接器需要将每一个源文件的目标文件抽出来并重新组合成一个大的目标文件,该目标文件包含了完整代码,因此容易造成代码浪费和可执行…

    other 2023年6月26日
    00
  • 08001无法远程连接sqlserver数据库800

    如果您在远程连接SQL Server数据库时遇到了“08001无法远程连接SQL Server数据库800”错误,可以按照以下步骤进行排查: 首先,您需要确认SQL Server是否已启用远程连接。默认情况下,SQL Server不允许远程连接。您可以按照以下步骤启用远程连接: 打开SQL Server Configuration Manager。 选择SQ…

    other 2023年5月7日
    00
  • python小球落地问题及解决(递归函数)

    Python小球落地问题及解决(递归函数) 问题描述 一个小球从h米高的地方落下,每次落地后反弹回原来高度的一半;再落下,求它在第n次落地时,共经过了多少米?第n次反弹多高? 解决方法 这个问题可以用递归函数来解决。 首先,我们需要明确一下几个概念: $h$ 表示初始高度 $n$ 表示经过次数(包括反弹) $l$ 表示经过的路程总长度 $b$ 表示第 $n$…

    other 2023年6月27日
    00
  • Python运算符优先级详细整理

    Python运算符优先级详细整理 在Python中,运算符的优先级会影响表达式的计算顺序。了解运算符的优先级对于正确理解和编写代码非常重要。下面是Python运算符的优先级从高到低的详细整理。 1. 一元运算符 一元运算符作用于单个操作数。- -x:取反- +x:正数标识符 2. 幂运算符 幂运算符是计算幂的操作符。- **:计算幂 3. 乘法、除法、取余和…

    other 2023年6月28日
    00
合作推广
合作推广
分享本页
返回顶部