利用C++简单实现顺序表和单链表的示例代码

首先我需要说明一下Markdown中的代码块格式,在Markdown中使用三个反引号(```)或者一个制表符(Tab键)加上代码语言名称来表示代码块。例如,C++的代码可以用以下方式表示:

#include <iostream>
using namespace std;
int main()
{
    cout << "Hello, World!" << endl;
    return 0;
}

接下来我们就可以开始讲解如何利用C++简单实现顺序表和单链表的示例代码啦。

1. 实现顺序表

在C++中,可以很容易地使用数组来实现顺序表。以下是一个简单的例子:

#include <iostream>
using namespace std;

const int MAXSIZE = 100;

class SeqList {
public:
    SeqList() {
        length = 0;
    }
    bool insert(int pos, int value) {
        if (length == MAXSIZE) {
            return false;
        }
        if (pos < 1 || pos > length + 1) {
            return false;
        }
        for (int i = length; i >= pos; i--) {
            data[i] = data[i - 1];
        }
        data[pos - 1] = value;
        length++;
        return true;
    }
    bool remove(int pos) {
        if (pos < 1 || pos > length) {
            return false;
        }
        for (int i = pos - 1; i < length - 1; i++) {
            data[i] = data[i + 1];
        }
        length--;
        return true;
    }
    void print() {
        for (int i = 0; i < length; i++) {
            cout << data[i] << " ";
        }
        cout << endl;
    }
private:
    int data[MAXSIZE];
    int length;
};

int main() {
    SeqList list;
    list.insert(1, 1);
    list.insert(2, 2);
    list.insert(3, 3); 
    list.print(); // 输出 1 2 3
    list.remove(2);
    list.print(); // 输出 1 3
    return 0;
}

在这个代码中,我们定义了一个SeqList类来实现顺序表。该类包含了如下操作:

  • insert(int pos, int value):在指定位置插入一个元素;
  • remove(int pos):删除指定位置的一个元素;
  • print():打印整个顺序表。

这个例子还包含了两个对SeqList类进行测试的示例,分别在第14-16行和第18-20行调用了insert()print()remove()方法。

2. 实现单链表

单链表是一种比较常见的数据结构,也比较容易用C++实现。以下是一个简单的例子:

#include <iostream>

using namespace std;

class Node {
public:
    int data;
    Node *next;
    Node(int d = 0, Node *n = NULL) {
        data = d;
        next = n;
    }
};

class LinkedList {
public:
    LinkedList() {
        head = new Node();
        size = 0;
    }
    ~LinkedList() {
        Node *p = head;
        while (p != NULL) {
            Node *q = p;
            p = p->next;
            delete q;
        }
    }
    bool insert(int pos, int value) {
        if (pos < 1 || pos > size + 1) {
            return false;
        }
        Node *p = head;
        for (int i = 1; i < pos; i++) {
            p = p->next;
        }
        Node *q = new Node(value, p->next);
        p->next = q;
        size++;
        return true;
    }
    bool remove(int pos) {
        if (pos < 1 || pos > size) {
            return false;
        }
        Node *p = head;
        for (int i = 1; i < pos; i++) {
            p = p->next;
        }
        Node *q = p->next;
        p->next = q->next;
        delete q;
        size--;
        return true;
    }
    void print() {
        Node *p = head->next;
        while (p != NULL) {
            cout << p->data << " ";
            p = p->next;
        }
        cout << endl;
    }
private:
    Node *head;
    int size;
};

int main() {
    LinkedList list;
    list.insert(1, 1);
    list.insert(2, 2);
    list.insert(3, 3);
    list.print(); // 输出 1 2 3
    list.remove(2);
    list.print(); // 输出 1 3
    return 0;
}

这个例子中,我们定义了一个Node类来表示单链表中的一个结点,其中包含了该结点的数据和指向下一个结点的指针。然后我们定义了一个LinkedList类来实现单链表,该类包含了如下操作:

  • insert(int pos, int value):在指定位置插入一个结点;
  • remove(int pos):删除指定位置的一个结点;
  • print():打印整个单链表。

在该代码中,我们同样定义了两个示例来测试LinkedList类中的方法。

希望上述内容能够对您有帮助,如有问题请随时提出。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用C++简单实现顺序表和单链表的示例代码 - Python技术站

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

相关文章

  • Vue技巧Element Table二次封装实战示例

    下面我将详细讲解“Vue技巧Element Table二次封装实战示例”的完整攻略。 什么是Element Table? Element Table是一个基于Vue框架的表格组件,具有强大的功能和丰富的样式,适用于各种单、多选、分页等场景。 但是,使用Element Table时需要编写大量的重复代码,这导致维护代码十分繁琐。 因此,我们可以对Element…

    other 2023年6月25日
    00
  • bash-x命令

    关于“bash-x命令”的完整攻略 在Linux系统中,bash-x命令是一个非常有用的工具,它可以帮助我们在本中调试代码。本攻略将详细介绍bash-x命令的用法,包括如使用它来调试脚本以及两个示说明。 bash-x命令 bash-x命令是一个用于调试bash脚本的工具它可以帮助我们在脚本中查看每个令的执行况,以便我们更好地理解脚本的执行过程。bash-x命…

    other 2023年5月7日
    00
  • c++优先队列用法知识点总结

    C++优先队列用法知识点总结 优先队列简介 优先队列是一个具有优先级的队列,可以确保元素按照一定的优先级顺序出队。C++中的优先队列底层使用堆实现,因此其时间复杂度为O(logn)。 优先队列的基本操作 插入一个元素 C++中,插入一个元素可以使用push()函数。 #include <queue> priority_queue<int&g…

    other 2023年6月27日
    00
  • vue将数字转为中文大写金额方式

    Vue将数字转为中文大写金额方式攻略 步骤一:创建过滤器 首先,在Vue应用中创建一个过滤器,用于将数字转换为中文大写金额的方式。在Vue组件中的filters选项中添加以下代码: filters: { toChineseAmount(value) { // 将数字转换为中文大写金额的逻辑代码 // … // 返回转换后的中文大写金额 return co…

    other 2023年8月18日
    00
  • Apache2与PHP5 for WinXP简单配置技巧

    Apache2与PHP5 for WinXP简单配置技巧 前言 本文主要介绍如何在Windows XP系统下安装和配置Apache2与PHP5,并提供了几个简单的配置技巧。这些技巧可以让你更好地利用这两个工具,为Web开发提供更好的支持。 安装Apache2 首先,需要安装Apache2。可以通过在官网下载Windows版本的Apache HTTP Serv…

    other 2023年6月27日
    00
  • 自己简单封装的一个CDialog类实例

    以下是自己简单封装的CDialog类实例的攻略: 1. 创建CDialog类 首先,在Visual Studio中创建一个新的MFC应用程序。选择Empty Project,然后选中MFC应用程序。接下来,在项目设置中,选择“使用CDocuments”选项。 然后,我们开始封装一个CDialog类。打开一个.h文件,在其中定义一个新的类,可以使用如下代码: …

    other 2023年6月25日
    00
  • PHP学习记录之数组函数

    PHP学习记录之数组函数攻略 介绍 在PHP中,数组是一种非常重要的数据结构,它可以用来存储和操作一组相关的数据。PHP提供了许多强大的数组函数,可以帮助我们对数组进行各种操作和处理。本攻略将详细介绍一些常用的数组函数及其用法。 1. array_push函数 array_push函数用于将一个或多个元素添加到数组的末尾。它的语法如下: array_push…

    other 2023年8月8日
    00
  • 使用postman进行接口测试的方法(测试用户管理模块)

    以下是使用Postman进行接口测试的完整攻略,以测试用户管理模块为例。 1. 下载并安装Postman 首先,我们需要下载并安装Postman,下载地址为 https://www.postman.com/downloads/ 2. 添加测试环境 在Postman中添加一个新的测试环境,点击左上角“环境Quick Look”下方的“Edit”,输入环境名称,…

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