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语言链表案例学习之通讯录的实现”的完整攻略。 1. 案例简介 本案例的目的是通过实现一个简单的通讯录程序,来学习C语言链表的原理和操作。程序主要功能涵盖通讯录添加、删除、修改以及查询。 2. 程序架构 程序的整体结构如下所示: 头文件声明 结构体定义 函数声明 主函数 函数实现 其中,头文件声明包含stdio.h、stdlib.h以及st…

    数据结构 2023年5月17日
    00
  • 数据结构TypeScript之二叉查找树实现详解

    数据结构TypeScript之二叉查找树实现详解 什么是二叉查找树 二叉查找树(Binary Search Tree,简称BST)是一种基础的数据结构,也是一种常用的搜索算法。它通过以二叉树的形式表示各个结点之间的关系,实现了快速查找、添加、删除等操作。对于任何一个节点,其左子树上的节点值均小于该节点的值,右子树上的节点值均大于该节点的值。 二叉查找树的实现…

    数据结构 2023年5月17日
    00
  • Java数据结构与算法之栈(动力节点Java学院整理)

    Java数据结构与算法之栈攻略 什么是栈? 栈是一种线性结构,属于“先进后出”(Last In First Out,LIFO)的数据结构。它只允许在栈顶进行插入和删除操作。 栈的实现 栈的实现有两种方式: 基于数组实现的顺序栈(ArrayStack) 基于链表实现的链式栈(LinkedStack) 1. 基于数组实现的顺序栈 顺序栈的实现需要一个固定大小的数…

    数据结构 2023年5月17日
    00
  • Halcon学习教程(一) 之提取十字线中心 图像分割

      原文作者:aircraft   原文链接:https://www.cnblogs.com/DOMLX/p/17266405.html      废话不多说,因为毕业后工作原因比较忙,好久没更新博客了,直接上图。。。     上图有个十字线,我们要提取出十字线的中心(Hhhh这个线是我随手画的 没画直!!) 第一步:肯定是读取图像进行灰度提取处理啦。   …

    算法与数据结构 2023年4月18日
    00
  • JavaScript 数据结构之集合创建(1)

    当我们在编写JavaScript程序时,有时需要使用数据结构来组织和表示数据。其中之一是集合,它是一组无序且唯一的项的集合。这里就介绍如何在JavaScript中创建集合。 1. 集合定义 集合是一种不同于数组或对象,由一组彼此无关的元素组成的数据结构。集合中的元素是唯一的,即不允许重复元素。 2. 集合的操作 JavaScript中的集合可以支持以下常见操…

    数据结构 2023年5月17日
    00
  • 剑指 Offer 33. 二叉搜索树的后序遍历序列(java解题)

    目录 1. 题目 2. 解题思路 3. 数据类型功能函数总结 4. java代码 5. 踩坑小记 递归调用,显示StackOverflowError 1. 题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树: 5 / \ 2 6 /…

    算法与数据结构 2023年4月23日
    00
  • java 数据结构单链表的实现

    Java中实现单链表数据结构通常需要以下几个步骤: 1. 定义节点类 首先需要定义一个节点类,用于表示链表中的一个节点。每个节点包含两个属性:data表示节点的数据,next表示节点的下一个节点。这两个属性都需要定义为public,以便后续操作的访问。 public class Node { public int data; public Node next…

    数据结构 2023年5月17日
    00
  • 一些常见的字符串匹配算法

    作者:京东零售 李文涛 一、简介 1.1 Background 字符串匹配在文本处理的广泛领域中是一个非常重要的主题。字符串匹配包括在文本中找到一个,或者更一般地说,所有字符串(通常来讲称其为模式)的出现。该模式表示为p=p[0..m-1];它的长度等于m。文本表示为t=t[0..n-1],它的长度等于n。两个字符串都建立在一个有限的字符集上。 一个比较常见…

    算法与数据结构 2023年4月25日
    00
合作推广
合作推广
分享本页
返回顶部