C++数据结构之链表的创建

C++中链表的创建一般可分为以下几个步骤:

  1. 创建节点结构体
  2. 创建链表类,定义私有变量头结点(head)和一些公有方法,如插入、删除和打印链表等
  3. 实现链表的插入、删除和打印方法

下面将会对以上每个步骤进行详细讲解。

1. 创建节点结构体

节点结构体包含两个部分,一个是存储数据的变量,另一个是存储指向下一个节点的指针。代码如下:

struct Node {
    int val;  // 存储节点的数据
    Node *next; // 存储指向下一个节点的指针
};

2. 创建链表类

链表类一般包括两个私有变量:头结点head和链表长度size,以及一些公有方法,如插入、删除和打印链表等。代码如下:

class LinkedList {
private:
    Node *head; // 头结点指针
    int size; // 链表长度

public:
    LinkedList(); // 构造函数
    ~LinkedList(); // 析构函数
    void insert(int index, int val); // 在指定位置插入节点
    void remove(int index); // 删除指定位置的节点
    void printList(); // 打印整个链表
};

3. 实现链表的插入、删除和打印方法

插入节点

插入节点需要先找到要插入的位置,然后插入节点,修改指针的指向。代码如下:

void LinkedList::insert(int index, int val) {
    if (index < 0 || index > size) { // 判断插入位置是否合法
        return;
    }

    Node *node = new Node(); // 创建新节点
    node->val = val;
    node->next = nullptr;

    if (index == 0) { // 若插入位置为0,则更新head指针
        node->next = head;
        head = node;
    } else {
        Node *prev = head;
        for (int i = 0; i < index - 1; i++) { // 找到要插入位置的前一个节点
            prev = prev->next;
        }
        node->next = prev->next; // 插入节点
        prev->next = node;
    }

    size++; // 修改链表长度
}

删除节点

删除节点需要先找到要删除的位置,然后将前一个节点的指针指向下一个节点,最后删除要删除的节点。代码如下:

void LinkedList::remove(int index) {
    if (index < 0 || index >= size) { // 判断删除位置是否合法
        return;
    }

    Node *prev = head;
    if (index == 0) { // 若删除位置为0,则更新head指针
        head = prev->next;
    } else {
        for (int i = 0; i < index - 1; i++) { // 找到要删除位置的前一个节点
            prev = prev->next;
        }
    }

    Node *node = prev->next; // 要删除的节点指针
    prev->next = node->next; // 将前一个节点的指针指向下一个节点
    delete node; // 删除节点
    size--; // 修改链表长度
}

打印链表

打印链表需要遍历整个链表,依次输出每个节点的数据。代码如下:

void LinkedList::printList() {
    Node *curr = head;
    while (curr != nullptr) { // 遍历整个链表
        cout << curr->val << " -> ";
        curr = curr->next;
    }
    cout << "NULL" << endl; // 最后一个节点指向NULL
}

示例说明

  1. 首先,我们创建一个空链表对象,然后插入若干元素,最后打印整个链表。代码如下:
LinkedList list;

list.insert(0, 1); // 在位置0插入元素1
list.insert(1, 2); // 在位置1插入元素2
list.insert(2, 3); // 在位置2插入元素3

list.printList(); // 打印链表结果为:1 -> 2 -> 3 -> NULL
  1. 然后,我们从链表中删除一个元素,并再次打印链表。代码如下:
list.remove(1); // 删除位置1的元素

list.printList(); // 打印链表结果为:1 -> 3 -> NULL

以上就是C++中链表的创建和基本操作的完整攻略。

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

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • C语言结构体struct详解

    C语言结构体struct详解 什么是结构体? 在C语言中,结构体是一种用户自定义的数据类型,它可以将不同的数据类型组合在一起形成一个新的数据类型。结构体主要由结构体名、成员和符号构成。 使用结构体可以方便地定义一些复杂的数据类型,例如表示一个学生信息的数据类型,可以包括姓名、学号、性别、年龄等信息。 结构体的定义和声明 结构体的定义通常放在函数外部,以便在整…

    数据结构 2023年5月17日
    00
  • C语言实题讲解快速掌握单链表上

    C语言实题讲解快速掌握单链表 什么是单链表? 单链表是一种链式存储的线性数据结构,它由一系列称为节点的组成。每个节点都包括两个部分:数据域和指针域。指针域指示了下一个节点的地址,因此,我们可以通过遍历链表的方式访问所有节点。 单链表的操作 创建一个单链表 我们可以通过以下步骤来创建一个单链表:1. 定义单链表的节点结构体,包括数据域和指针域。2. 定义一个指…

    数据结构 2023年5月17日
    00
  • Java数据结构与算法入门实例详解

    Java数据结构与算法入门实例详解攻略 概述 本攻略主要介绍Java数据结构与算法入门实例详解,包括学习的目标、适合的人群、学习方法等。通过本攻略的学习,可以更好地掌握Java数据结构和算法的基本知识,提升编程水平。 学习目标 本攻略的学习目标为: 掌握Java基础数据结构,如数组、链表、栈、队列等; 理解并掌握常见算法,如排序、查找、递归等; 掌握Java…

    数据结构 2023年5月17日
    00
  • Unity接入高德开放API实现IP定位

    Unity接入高德开放API实现IP定位攻略 本文将详细介绍如何在Unity中接入高德开放API实现IP定位功能。 准备工作 在开始之前,需要准备以下内容: 高德开放平台账号 Unity集成开发环境 一台联网的电脑或手机 开始集成 1. 创建Unity项目 首先,我们需要在Unity中创建一个新的项目。 2. 导入AMap3D SDK 将下载好的AMap3D…

    数据结构 2023年5月17日
    00
  • Android随手笔记44之JSON数据解析

    Android随手笔记44之JSON数据解析 1. JSON数据的基本概念 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于 JavaScript 的一个子集。JSON 格式最初是为了解决 JavaScript 程序通过 AJAX 传输数据时的数据交换格式问题而出现的,但是现在已经成为了一种通用的数据格式。…

    数据结构 2023年5月17日
    00
  • java实现队列数据结构代码详解

    Java实现队列数据结构代码详解 1. 队列数据结构简介 队列(Queue)是一种先进先出(FIFO)的数据结构,支持在一端插入元素,在另一端删除元素并返回删除的元素。其操作包括入队(enqueue)和出队(dequeue)。 2. 队列实现方法 队列可以通过数组或链表来实现。其中,数组实现的队列称为顺序队列,链表实现的队列称为链式队列。 2.1 顺序队列 …

    数据结构 2023年5月17日
    00
  • java数据结构与算法数组模拟队列示例详解

    下面是“java数据结构与算法数组模拟队列示例详解”的完整攻略。 标题 Java数据结构与算法:数组模拟队列示例详解 简介 本文将以Java语言为例,详细讲解如何使用数组模拟队列。对于初学者来说,队列是一个非常基础的数据结构,掌握其实现方法可以帮助进一步理解其他的数据结构和算法。 队列的定义 队列(Queue)是一种先进先出(First In First O…

    数据结构 2023年5月17日
    00
  • C利用语言实现数据结构之队列

    C语言实现队列的完整攻略 什么是队列 队列是一种线性数据结构,它有两个端点:队头和队尾。新的元素插入到队尾,每次从队头取出一个元素。这就类似于人们排队买票,新的买票者排在队尾,每当售票员完成一笔交易,队列头的买票者出队。 基本操作 队列主要有以下3个基本操作: 入队(enqueue):将一个元素添加到队列的尾部 出队(dequeue):从队列的头部移除一个元…

    数据结构 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部