线性表-顺序存储结构

Posted jkl233

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性表-顺序存储结构相关的知识,希望对你有一定的参考价值。

线性表-顺序存储结构

顺序存储结构

线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素

三个属性

  • 存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置
  • 线性表的最大存储容量:数组的长度MaxSize
  • 线性表的当前长度:length

    数据长度和线性表长度的区别

  • 数据长度就是数组的长度,存放线性表的存储空间的长度,存储分配后这个量一般是不变的
  • 线性表长度是线性表中数据元素的个数,随着线性表的删除插入操作,这个长度是改变的
  • 在任何时刻,数组的长度大于等于线性表长度

    获得元素,插入,删除操作

    //C++代码

例:获得元素值

    const int numsLength = 6;//数组大小
    int nums[numsLength] = { 1, 2, 3, 4, 5 };
    //获取下标为2的元素,并打印
    int getNum = nums[2];
    cout << getNum << endl;

例:插入数据

    //插入
    int InsertIndex = -1;   //要插入元素的下标
    int InsertNum;          //插入的数值
    cout << "请输入要插入的数值和下标:";
    cin >> InsertNum >> InsertIndex;

    if (InsertIndex == -1 || InsertIndex < 0 || InsertIndex > 5)
    {
        cout << "下标输入有误!" << endl;
    }
    else
    {
        for (int i = numsLength - 1; i > InsertIndex; i--)
        {
            nums[i] = nums[i - 1];//移动元素
        }
        nums[InsertIndex] = InsertNum;//插入数值
        //遍历数组
        for (int i = 0; i < numsLength; i++)
        {
            cout << nums[i] << endl;
        }
    }

例:删除数据

    //删除
    int DeleteNum;
    int DeleteIndex = -1;//删除的数值下标
    cout << "请输入要删除的元素:";
    cin >> DeleteNum;
    //查找要删除的元素的下标位置
    for (int i = 0; i < numsLength; i++)
    {
        //找到和DeleteNum相同的元素
        if (nums[i] == DeleteNum)
        {
            DeleteIndex = i;
            break;
        }
    }
    if (DeleteIndex == -1)
    {
        cout << "要删除的数值没有找到!" << endl;
    }
    else//找到要删除的元素
    {
        for (int i = DeleteIndex; i < numsLength-2; i++)
        {
            nums[i] = nums[i + 1];//移动元素
        }
        //遍历数组
        for (int i = 0; i < numsLength - 2; i++)
        {
            cout << nums[i] << endl;
        }
    }

复杂度

在存、读数据时,时间复杂度是:O(1);
插入、删除时,时间复杂度是:O(n);

优缺点

优点

  • 无须为表示表中元素之间的逻辑关系而增加额外的存储空间
  • 可以快速地存取表中任意位置的元素

缺点

  • 插入和删除操作需要移动大量元素
  • 当线性表长度变化较大时,难以确定存储空间的容量

以上是关于线性表-顺序存储结构的主要内容,如果未能解决你的问题,请参考以下文章

Java数据结构(线性表)--线性表的顺序存储及其实现

线性表的顺序存储结构

数据结构回顾之顺序存储结构中的线性表(栈与队列顺序线性表实现)

线性表的顺序存储结构

线性表的链式存储(C代码实现)

2.2_线性表的顺序存储结构