浙江大学数据结构(2.1.2线性表及顺序存储)

什么是线性表

“线性表(Linear List)”:由同类型数据元素构成有序序列的线性结构

  • 表中元素个数称为线性表的长度
  • 线性表没有元素时,称为空表
  • 表启始位置称表头,表结束位置称表尾

线性表的抽象数据类型描述

  • 类型名称:线性表(List)
  • 数据对象集:线性表是n(>=0)个元素构成的有序序列(a1,a2,...,an)
  • 操作集:线性表L∈List,整数i表示位置,元素X∈ElementType,
  1. ListMakeEmpty():初始化一个空线性表L;
  2. ElementType FindKth(int K,List L):根据位序K,返回相应元素;
  3. int Find(ElementType X,List L)在线性表L中查找X的第一次出现位置;
  4. void Insert(ElementType X,int i,List L):在位序i前插入一个新元素X;
  5. void Delete(int i,List L):删除指定位序i的元素;
  6. int Length(List L):返回线性表L的长度n;

线性表的顺序存储实现

  • 利用数组的连续存储空间顺序存放线性表的各元素
  • ​
    typedef struct LNode *List;  // 将结构体的指针类型定义为List
    struct LNode{
                ElementType Data[MAXSIZE];
                int Last;
    
    };
    struct LNode L;  // 定义结构体,名为L
    List PtrL;  // 定义结构体的指针变量Ptrl
    
    ​

     

  • 访问小标为i的元素:L.Data[i]或Ptrl->Data[i]

  • 线性表的长度:L.Last+1或Ptrl->Last+1

  • 主要操作的实现
  1. 初始化(建立空的顺序表)
List MakeEmpty()
{
 List Ptrl;
 Ptrl = (List)malloc(sizeof(struct LNode));
 Ptrl->Last = -1;
 return Ptrl;
}

    2.查找(查找成功的平均比较次数为(n+1)/2,平均时间性能为O(n))

int Find(ElementType X, List Ptrl)
{
 int i=0;
 while (i<=Ptrl->Last && Ptrl->Data[i]!=X)
       i++;
 if (i>Ptrl->Last)
    return -1;
 else
    return i;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值