前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构--线性表顺序存储(顺序表)

数据结构--线性表顺序存储(顺序表)

作者头像
风骨散人Chiam
发布2020-10-28 11:30:31
6540
发布2020-10-28 11:30:31
举报
文章被收录于专栏:CSDN旧文

特点:

线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素。

作用:

线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。

顺序存储的实现:

一维数组存储顺序表中的数据

缺点:

大小固定,使用前需要分配地址,因此当表长变化较大时,难以确定合适的存储规模插入删除操作复杂性太高。

优点:

元素访问的时候O(1)访问。

实现代码:

代码语言:javascript
复制
#include<bits/stdc++.h>
#define MaxSize 10000 //顺序表借助数组实现,然后必须要规定大小才能分配地址。宏定义
using namespace std;
template <class T>
class SeqList
{
private:
    T data[MaxSize]; // 存放数据元素的数组
    int length; // 线性表的长度
public:
    SeqList( )
    {
        length=0;   // 无参构造函数
    }
    SeqList ( T *a, int n ); // 有参构造函数
    int get_Len ( ) {return length;  } // 求线性表的长度
    void print_List ( ) ; // 打印线性表
    void  ins_Loc(int i, T x);// 在线性表中第 i 个位置插入值为 x 的元素
    void  del_Loc(int i);//删除线性表的第 i 个元素
    T get_Loc(int i); // 按位查找,取线性表的第 i 个元素
    T ser_Loc(T x); // 按值查找,求线性表中值为 x 的元素序号
    ~SeqList( ) { } // 析构函数为空,数组是程序结束自动回收内存,无需写析构函数
};
template <class T>
SeqList<T>:: SeqList(T a[], int n)  //带参数构造函数
{
    if (n>MaxSize)
        throw "超出限制";  //抛出异常情况
    length=n;
    for(int i=0; i<n; i++)
        data[i]=a[i];
}
template <class T>
void SeqList<T>::ins_Loc(int i, T x)
{
    if (length>=MaxSize)
        throw "超出限制";
    if (i<1 || i>length+1)
        throw "位置非法";
    length++;
    for (int j=length; j>=i; j--)
        data[j]=data[j-1];
    data[i-1]=x;
}
template <class T>
void SeqList<T>::del_Loc(int i)
{
    if (length==0)
        throw "空表";
    if (i<1 || i>length)
        throw "位置非法";
    for (int j=i; j<length; j++)
        data[j-1]=data[j];
    length--;
    return ;
}
template <class T>
T SeqList<T>::get_Loc(int i)
{
    if (i<1 && i>length)
        throw "查找位置非法";
    else
        return data[i-1];
}
template <class T>
T SeqList<T>::ser_Loc(T x)
{
    for (int i=0; i<length; i++)
        if (data[i]==x)
            return i+1 ;  //下标为i的元素等于x,返回其序号i+1
    return 0;  //退出循环,说明查找失败
}
template <class T>
void SeqList<T>:: print_List()
{
    for(int i=0;i<length;i++) cout<<data[i]<<" ";
}
int main()
{
    //使用以上功能的代码就不给出了
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/11/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档