数据结构笔记——第二章线性表

   2.1  线性表的逻辑结构

     2.1.1  线性表的定义

             线性表:简称表,是n个具有相同类型的数据元素的有限序列。

            长度:线性表中数据元素的个数。

             空表:长度为0;非空表记作:L=(a1,a2,....,an)

           任意一对相邻的数据元素ai-1和ai(1<i<=n)之间存在序偶 关系<ai-1,ai>,ai-1称为ai的前驱,ai称为ai-1的后继。

    2.1.2  线性表的抽象数据类型定义

            线性表表示一个相当灵活的数据结构,对线性表的数据元素不仅可以进行存取访问,还可以进行插入和删除       作.其抽象数据类型定义:

            ADT  List

            Date

            Operation

            InitList      功能:线性表初始化

            DestroyList  功能:销毁线性表

            Length      功能:求线性表的长度

            Get         功能:按位查找,在线性表中查找序号为i的数据元素

            Locate      功能:按值查找,在线性表中查找值等于x的元素

            Insert       功能:插入操作,在线性表的第i个位置插入一个新元素x

            Delete      功能:删除操作,删除线性表中的第i个元素

            Empty      功能:判空操作,判断线性表是否为空表

            PrintList    功能:遍历操作,按序号依次输出线性表中的元素

            endADT

           注意:对于不同的应用上述操作的接口可能不同,例如删除操作,若要求删除表中值为x的元素,则Delete操作的输入参数就不能是位置而应该是元素值。

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

          顺序表:线性表的顺序存储结构。它是用一段地址连续的存储单元依次存储线性表的数据元素。C++中数组下标是从0开始的,而线性表中元素的序号是从1开始的,即线性表中第i个元素存储在数组中下标为i-1的位置。顺序表中数据元素的存储地址是其序号的线性函数,只要确定了存储顺序表的起始地址,计算任意一个元素的存储地址时间是相等的(随机存取)。

        2.2.2顺序表的实现

               const int MaxSize=100;

               template<class T>

               class SeqList

              {

                 public:

                           SeqList(){length=0;}

                           SeqList(T int a[],int n);

                           ~SeqList(){}

                           Int Length(){return length;}

                           T Get(int i);

                           void Insert(int i,T x);

                           T Delete(int i);

                           int Locate(T x);

                           void PrintList();

                private:

                          T data[MaxSize];

                           int length;

              };

           1、  构造函数

                   无参构造函数SeqList()创建一个空的顺序表,只简单地将顺序表的长度length初始化0 

                       

              有参构造函数SeqList(T a[],int n)需要将给定的数组元素作为线性表的数据元素顺序表中,并将传入的元素个数作为顺序表的长度。

             

    

            顺序表有参构造函数SeqList

              template<class T>

              SeqList<T>::SeqList(T a[],int n)

              {

                   if(n>MaxSize)throw"参数非法";

                   for (int i=0;i<n;i++)

                   data[i]=a[i];

                   length=n;

               }

            2、  求线性表的长度

                  只需要返回变量length的值

           3、  查找操作

            (1)、按位查找:算法的时间复杂度为O(1)     

       顺序表按位查找算法Get

            template<class T>

           T SeqList<T>::Get(int i)

          {

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值