线性表顺序表示和实现2 --2.4下篇

顺序表示意图

在这里插入图片描述
注意逻辑位序物理位序相差1

#define MAXSIZE 100
typedef struct{
    ElemType* elem;
    int length;
}SqList;
SqList l;//定义变量l,l是SqList这样的类型,l是一个顺序表

在这里插入图片描述

线性表的基本操作

在这里插入图片描述

补充:操作算法中用到的预定义常量和类型

在这里插入图片描述

操作

算法【2.1】线性表L的初始化
Status InitList_sq(SqList &L){
//构造一个空的顺序表L
    L.elem = new ElemType[MAXSIZE];、
    //为顺序表分配空间
    if(!L.elem)exit(OBERFLOW);
    //储存分配失败,返回 -2
    L.length = 0;
    //空表长度为0
    return 0;//成功返回0
}
销毁线性表and清空
void DestroyList(SqList &L){
    if(L.elem)delete L.elem;
}
void ClearList(SqList &L){
    L.length = 0;
}

在这里插入图片描述

算法【2.2】顺序表的取值

在这里插入图片描述

算法【2.3】顺序表的查找
  • 在线性表L中查找与指定值e相同的数据元素的位置

  • 从表的一端开始,逐个进行记录的关键字和给定值的比较,找到,返回该元素的位置序号,没有找到,返回0;
    在这里插入图片描述
    顺序查找算法分析
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    假设每一个记录的查找概率相同:Pi = 1 / n
    最后可以的到 ASL =(n+1)/2

    顺序表的插入

    在这里插入图片描述

三种情况

  1. 插入位置在最后

  2. 插入位置在中间

  3. 插入位置在最后

算法【2.4】顺序表的插入
Status ListInsert_Sq(SqList &L,int i,ElemType e){
 if(i<1||i>L.length+1) return ERROR;
 if(L.length == MAXSIZE) return ERROR;
     for( int j=L.length -1;j>=i-1;j--){
     L.elem[j+1] = L.elem[j];
 }
 L.elem[i -1] = e;
 L.length++;
}

在这里插入图片描述
算法分析
在这里插入图片描述

顺序表的删除

在这里插入图片描述

算法【2.5】顺序表的删除算法实现

在这里插入图片描述

顺序表得删除算法分析

在这里插入图片描述

顺序表小节

顺序表得特点

在这里插入图片描述

顺序表的操作算法分析

在这里插入图片描述

顺序表的优缺点

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值