利用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日

相关文章

  • C语言入门篇–初识指针和指针变量

    C语言入门篇–初识指针和指针变量 指针是C语言中非常重要的概念,也是初学者最难理解的地方之一。本文将介绍指针的基本概念、使用方法和注意事项。 什么是指针 指针是一种变量类型,它存储的是一个地址,指向内存中的某个数据。指针可以访问和操作这个数据,使程序更加灵活。 如何定义指针变量 定义指针变量需要指定其数据类型和名称。一般使用*符号表示指针变量,例如: in…

    other 2023年6月27日
    00
  • Entity Framework主从表数据加载方式

    Entity Framework是一种ORM(对象关系映射)框架,使用它可以方便地访问和操作数据库。在EF中,主从表关系常常存在,数据加载方式也有许多种。本文将详细讲解Entity Framework主从表数据加载方式的完整攻略。 1. Entity Framework主从表数据加载方式的分类 在EF中,我们常常需要加载单个主实体和其相关联的子实体。Enti…

    other 2023年6月25日
    00
  • 浅谈Java变量的初始化顺序详解

    浅谈Java变量的初始化顺序详解 在Java中,我们定义一个类时,类体中的各种变量在被使用之前需要被初始化。Java规定了变量初始化的顺序,理解变量初始化顺序的重要性对于开发高质量的Java程序非常重要。 变量初始化的顺序 Java规定,成员变量、静态变量和实例变量都需要被初始化,初始化的顺序为: 静态变量(static variable),按照定义的顺序进…

    other 2023年6月20日
    00
  • php 无法加载mysql的module的时候的配置的解决方案引发的思考

    对于这个问题,我们可以采取以下步骤进行解决。 1. 确认问题 首先,在出现问题之后,我们需要确认一下具体的错误信息,以便更好地解决问题。如果出现了类似于以下的错误提示: PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/20180509/mysql.so’ – /us…

    other 2023年6月26日
    00
  • Win8.1无法安装应用提示0x80244019错误的解决方法

    Win8.1无法安装应用提示0x80244019错误的解决方法 问题描述 在使用Windows 8.1操作系统的过程中,当尝试安装任何应用程序时,可能会提示错误代码0x80244019,导致应用程序无法安装成功。这可能是由于系统设置、网络连接或应用商店应用程序本身的问题导致的。 解决方法 以下是解决Windows 8.1无法安装应用程序0x80244019错…

    other 2023年6月27日
    00
  • beyondcompare4密钥

    beyondcompare4密钥 什么是Beyond Compare 4? Beyond Compare 4是一款非常好用的文件和文件夹对比工具软件,可以帮助我们比较和合并文件和文件夹,以及查找和删除重复的文件等等。它支持FTP、SFTP和WebDAV等文件传输协议,可以快速地比较两个文件夹之间的差异,是一款非常实用的跨平台对比工具。 Beyond Comp…

    其他 2023年3月28日
    00
  • win2003命令shutdown -r -t 0 (dos cmd重启)

    关于win2003命令shutdown的说明 shutdown 命令是 Windows 操作系统中的自带命令,用于关闭或重启计算机。通过该命令可以实现如下功能: 关闭计算机 重新启动计算机 -r 是 shutdown 命令中的一个选项,表示重新启动计算机。 -t 0 也是 shutdown 命令中的一个选项,表示等待的时间,单位是秒。在这种情况下,它等待 0…

    other 2023年6月26日
    00
  • 各种文件后缀名与打开方式大全

    各种文件后缀名与打开方式大全 文字类文档 .txt:使用任何文本编辑器可以打开。例如:Windows 上的记事本、Mac 上的 TextEdit、Linux 上的 Vim、Nano 等。 .doc/.docx:需要使用 Microsoft Word 打开,也可以使用谷歌文档等第三方应用程序打开。 .pdf:需要使用 Adobe Reader 或类似的 PDF…

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