线性表(一)

一、定义

1、线性表:零个元素或者多个元素组成的有限序列
2、定义一个抽象数据类型:

ADT      抽象数据类型名
DATA 
         元素之间逻辑关系的定义
Operation
         操作
EndData
        

例如:我定一个抽象数据类型Point来描述游戏中人物的空间位置(x,y,z)。简单来说就是把基本数据类型(int、double…)捆绑起来。

二、操作

1、线性表置空
2、删除数据
3、插入数据
4、根据位序得到数据

三、线性表的顺序存储结构

1、地址连续的单元,事实上就是对数组的封装。顺序结构封装需要三个属性①存储空间起始位置 :数组data(就像是电影院的座位)②线性表最大存储容量:数组的长度Maxsize(就像买的maxsize张电影票)③线性表的当前长度:length(来了length个人)

注意:数组的长度是存放线性表的存储空间总长度,初始化后一般不变。线性表的当前长度是线性表中元素的个数,会发生改变。

2、地址计算方法。线性表从1开始计数,数组从0开始计数。一般跟电脑交流的时候就是从0开始。排兵布阵的时候从开始

loc()获取存储位置的函数。,c表示ElemType占用的c个字节,那么线性表第ai+1和ai之间的内存关系:

                             Loc(ai+1)=Loc(ai)+c

对于第i个元素的内存位置可以根据a1的内存位置推出来

                         Loc(ai)=Loc(a1)+(i-1)*c

3、获取元素操作GetElem:将线性表的第i个元素返回,对于数组来说返回下标为i-1的数据

typedef int Status;
Status GetElem(sqList L,int i,ElemType *e)//i表示线性表L的第i个元素
{
   
     if(L.length==0||i<1||i>L.length
     {
   
        return ERROR;
        }
      *e=L.data(i-1);
      return OK;
}

4、插入操作InsertElem:

Status ListInsert(sqList *L,int i,ElemType e)
{
   
     int k;
     if(L->length==MAXSZIE)
     {
   
         return ERROR;
         
     }
     if(i<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值