C++ 数据结构线性表-数组实现

C++ 数据结构线性表-数组实现

什么是线性表

线性表,简单来说,就是一种有序的数据结构,数据元素起来往往构成一列,比如数组、链表等等。

数组实现线性表

数组是一种容器,它可以存储相同类型的数据元素。使用数组实现线性表,就是将数据元素按照一定的顺序依次存储在数组中。

数组实现线性表的基本思路

  1. 定义一个数组,用来存储数据元素;
  2. 定义一个变量,用来记录线性表中元素的个数;
  3. 插入元素时,将数据元素插入到数组中,并更新计数器;
  4. 删除元素时,将数组中的元素前移,并更新计数器;
  5. 遍历元素时,依次输出数组中的元素。

数组实现线性表的基本代码

const int MAXSIZE = 100; // 线性表的最大长度
typedef int ElementType; // 定义元素类型
typedef struct {    
    ElementType data[MAXSIZE]; // 数据元素存储数组
    int length; // 线性表当前长度
} LinearList;

// 初始化线性表
void InitList(LinearList &L)
{
    L.length = 0;
}

// 插入元素
bool InsertList(LinearList &L, int i, ElementType x)
{
    if (i < 1 || i > L.length + 1 || L.length == MAXSIZE)
        return false;
    for (int j = L.length; j >= i; j--)
        L.data[j] = L.data[j - 1];
    L.data[i - 1] = x;
    L.length++;
    return true;
}

// 删除元素
bool DelList(LinearList &L, int i)
{
    if (i < 1 || i > L.length)
        return false;
    for (int j = i; j < L.length; j++)
        L.data[j - 1] = L.data[j];
    L.length--;
    return true;
}

// 遍历线性表
void TraverseList(LinearList L)
{
    for (int i = 0; i < L.length; i++)
        cout << L.data[i] << " ";
    cout << endl;
}

数组实现线性表的示例1

#include <iostream>
#include "linearlist.h"
using namespace std;

int main()
{
    LinearList L;
    InitList(L);
    InsertList(L, 1, 1);
    InsertList(L, 2, 3);
    InsertList(L, 3, 5);
    cout << "插入元素后的线性表:" << endl;
    TraverseList(L);
    DelList(L, 2);
    cout << "删除元素后的线性表:" << endl;
    TraverseList(L);
    return 0;
}

代码的执行结果如下:

插入元素后的线性表:
1 3 5 
删除元素后的线性表:
1 5 

数组实现线性表的示例2

#include <iostream>
#include "linearlist.h"
using namespace std;

int main()
{
    LinearList L;
    InitList(L);
    for (int i = 0; i < MAXSIZE / 2; i++)
        InsertList(L, i + 1, i * 2);
    cout << "插入元素后的线性表:" << endl;
    TraverseList(L);
    cout << "删除元素后的线性表:" << endl;
    for (int i = 0; i < MAXSIZE / 4; i++)
        DelList(L, i + 1);
    TraverseList(L);
    return 0;
}

代码的执行结果如下:

插入元素后的线性表:
0 2 4 6 8 10 12 14 16 18 
删除元素后的线性表:
8 10 12 14 16 18 

总结

数组的优点是随机存取速度快、内存地址连续等,缺点是大小固定,不能动态扩展。使用数组实现线性表,可以使用简单的数组操作实现常见的插入、删除、遍历等操作。但是线性表长度有限,无法动态扩展,因此需要慎重选择。

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

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

相关文章

  • C语言数据结构之单链表操作详解

    C语言数据结构之单链表操作详解 本文将详细讲解C语言数据结构中单链表的操作方法,包括单链表的建立、遍历、插入、删除等操作,并提供两个示例进行说明。 单链表的定义 单链表是一种常见的动态数据结构,由若干节点组成,每个节点通常包含一个数据元素和一个指向下一个节点的指针。单链表最后一个节点的指针指向NULL,表示链表的结尾。 单链表的节点定义 单链表的节点通常由结…

    数据结构 2023年5月17日
    00
  • Python数据结构之栈详解

    Python数据结构之栈详解 什么是栈? 栈(stack)是一种数据元素只能在一端进行插入和删除操作的线性表。 栈的特点是后进先出,即在一个非空栈中,最后放入的元素最先被取出。 栈的操作 栈操作的基本有两个: push(elem):插入一个新的元素elem到栈中。 pop():弹出栈顶的元素,并返回这个被弹出元素的值。 此外还有一个用于查询栈顶元素的操作: …

    数据结构 2023年5月17日
    00
  • redis中hash数据结构及说明

    Redis中Hash数据结构及说明 简介 Redis中的Hash是一个string类型的field和value的映射表,可以将多个键值对存储在一个数据结构中,适合于存储对象。 通过HASH数据结构,我们可以方便的对单个field进行增删改查操作,增加了程序编写的方便性。 命令 以下是Hash数据结构的基础命令: HSET 将哈希表 key 中的域 field…

    数据结构 2023年5月17日
    00
  • JavaScript数据结构常见面试问题整理

    JavaScript数据结构常见面试问题整理 介绍 JavaScript是一种广泛使用的脚本语言,用于在Web上创建动态效果,验证表单,增强用户体验等。它是一种高级语言,使用许多数据结构来存储和处理数据。在面试中,考官通常会问一些与JavaScript数据结构相关的问题,这篇文章将整理一些常见的面试问题和他们的解答,以便帮助你做好准备。 常见问题 1. 什么…

    数据结构 2023年5月17日
    00
  • 数据结构串的操作实例详解

    数据结构串的操作实例详解 什么是数据结构串? 数据结构串是由若干个字符按照一定的顺序排列而成的线性结构。可以对串进行许多操作,如子串的截取、串的连接、串的替换等等。 数据结构串的基本操作 串的初始化 为了操作一个串,我们需要先定义一个串并初始化,可以通过以下代码实现: #include <stdio.h> #define MAXSIZE 100 …

    数据结构 2023年5月17日
    00
  • 【ACM算法竞赛日常训练】DAY3题解与分析【旅游】【tokitsukaze and Soldier】

    DAY3共2题: 旅游 tokitsukaze and Soldier ? 作者:Eriktse? 简介:19岁,211计算机在读,现役ACM银牌选手?力争以通俗易懂的方式讲解算法!❤️欢迎关注我,一起交流C++/Python算法。(优质好文持续更新中……)?? 原文链接(阅读原文获得更好阅读体验): 旅游 题目传送门:https://ac.nowcoder…

    算法与数据结构 2023年4月18日
    00
  • java数据结构实现顺序表示例

    如果想要实现一种数据结构,我们首先需要考虑它的存储结构。对于顺序存储结构,Java中的数组是一个很好的选择。下面就为大家分享关于Java数据结构实现顺序表示例的完整攻略,帮助读者更好地理解该数据结构的实现方式。 1. 定义一个顺序表数组 首先,我们需要定义一个数组类型的顺序表。这个顺序表可以使用泛型来表示各种类型的数据: public class MyArr…

    数据结构 2023年5月17日
    00
  • C语言数据结构之模式匹配字符串定位问题

    C语言数据结构之模式匹配字符串定位问题 什么是模式匹配字符串定位? 模式匹配字符串定位即在一个文本串中匹配一个模式串,并且返回模式串在文本串中第一次出现的位置。 例如,对于文本串“this is a test string”,我们想要匹配模式串“test”,我们期望得到的结果是第一次出现的位置为10。 KMP算法 算法思路 KMP算法是一种高效的字符串匹配算…

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