码迷,mamicode.com
首页 > 其他好文 > 详细

线性表-顺序存储结构

时间:2018-11-11 13:52:14      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:delete   连续   插入   它的   存储结构   顺序存储结构   移动   bre   for   

线性表-顺序存储结构

顺序存储结构

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

三个属性

  • 存储空间的起始位置:数组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);

优缺点

优点

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

缺点

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

线性表-顺序存储结构

标签:delete   连续   插入   它的   存储结构   顺序存储结构   移动   bre   for   

原文地址:https://www.cnblogs.com/jkl233/p/9941861.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!