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

yizhihongxing

当使用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日

相关文章

  • base64怎样转pdf前端

    Base64怎样转PDF前端 在前端开发中,经常需要将一些数据进行编码和解码。其中,Base64编码是常用的一种编码方式,它可以将二进制数据转换为可打印的ASCII字符集,便于传输和显示。在这篇文章中,我们将讨论如何使用Base64编码将PDF文件转换为前端可读取的数据。 1. Base64编码 Base64编码是一种用于在网络上传输二进制数据的编码方法,它…

    其他 2023年3月28日
    00
  • 在Mybatis中association标签多层嵌套的问题

    在Mybatis中association标签多层嵌套的问题攻略 在Mybatis中,association标签用于处理多表关联查询的结果映射。当需要进行多层嵌套的关联查询时,可以通过嵌套使用association标签来实现。下面是详细的攻略,包含两个示例说明。 示例1:一对一关联查询 假设我们有两个表,一个是user表,另一个是order表。每个用户可以有多…

    other 2023年7月27日
    00
  • Serveral effective linux commands

    Several effective Linux commands Linux is a powerful operating system that offers many tools and commands to help users manage their system. In this article, we will discuss severa…

    其他 2023年3月28日
    00
  • 电脑无故重新启动的一个解决办法(硬件篇)

    电脑无故重新启动的一个解决办法(硬件篇) 背景 在日常使用电脑的过程中,有可能会遇到电脑无故重新启动的问题,经常出现这种现象会影响到工作和学习。而导致电脑无故重新启动的原因可能有很多,其中硬件问题是比较常见的一种。 解决办法 步骤一:排查电源问题 获取一台稳定的电源,将其接到电脑中并测试电脑是否重启。 在电脑自带的电源设备中查看是否有变形、损坏等问题。 针对…

    other 2023年6月27日
    00
  • Ant Design of Vue的树形控件Tree的使用及说明

    Ant Design 是一款优秀的 React UI 库,它的 Vue 版本 Ant Design of Vue 同样也是备受欢迎的UI框架之一。Ant Design of Vue中提供了一种常用的可展开、可收起的树形控件 Tree,下面我来详细介绍如何使用及说明。 安装 可以通过 npm 或 yarn 安装 Ant Design of Vue。 使用 np…

    other 2023年6月27日
    00
  • 微信小程序如何跳转到另一个小程序?

    以下是关于“微信小程序如何跳转到另一个小程序”的完整攻略: 微信小程序跳转到另一个小程序 微信小程序可以通过跳转到一个小程序来实现更多的功能和服务。以下是微信小程序跳转到另一个小程序的步骤: 获取跳转链接 在需要跳转的小程序中获取跳转链接。跳转链接可以在小程序的管理后台中获取,也可以通过小程序开发者工具中的“生成小程序码”功能获取。 调用跳转API在微信小程…

    other 2023年5月9日
    00
  • HTML 代码编写的30条技巧

    HTML 代码编写的30条技巧攻略 HTML 是一种用于创建网页的标记语言,掌握一些技巧可以帮助你更高效地编写 HTML 代码。以下是30条技巧的详细讲解: 1. 使用语义化标签 使用语义化标签可以增加代码的可读性和可维护性。例如,使用 <header> 标签表示页面的页眉,使用 <nav> 标签表示导航栏。 示例: <head…

    other 2023年9月6日
    00
  • K8S中Pod重启策略及重启可能原因详细讲解

    K8S中Pod重启策略及重启可能原因 在Kubernetes中, Pod是最小的可部署的单元,可以容纳一个或多个容器。然而在Kubernetes中,任何一种资源都是有限的,在某些情况下,Pod可能会被重启,以保持系统的正常运行。在本文中,我们将详细讲解Kubernetes中Pod重启策略及重启可能原因。 重启策略 Pod有三种重启策略,分别是: Always…

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