2.1线性表及其基本运算

二、基本运算
INITIATE(L) 初始化操作 设定一个空的线性表L


LENGTH(L) 求长度函数  函数为线性表L中的数据元素个数


GET(L,i) 取元素函数 


PRIOR(L,elm)  求前驱函数 elm为L中的一个数据元素,若它的位序大于1,则函数为elm前驱,否则为NULL


NEXT(L,elm) 求后继函数 若elm的位序小于表长,则函数值为elm的后继,否则为NULL


LOCATE(L,x) 定位函数 给定值x,若x不在表中 则返回0,否则,返回x在表中第一次出现的位序


INSERTE(L,i,b) 前插操作 在第i个元素插入新元素b,i的取值范围为1<=i<=n+1;i=n+i表示在表位插入,n为表长


DELETE(L,i) 删除操作 删除线性表L中的第i个元素,1<=i<=n


EMPTY(L) 判空表函数 若L为空表 则返回布尔值"true",否则返回"false"


CLEAR(L)表置空操作 将L置为空表




例子1 求两个集合的并,即A=A U B


分析:设A、B分别由两个线性表LA和LB表示,要求将LB中存在而LA中不存在的DE插入到表LA中。


算法思想:1、依次从LB中取出一个DE;=>GET(LB,i) for
 2、判在LA中的是否存在;=>LOCATE(LB,x)
 3、若不存在,则插入到LA中;=>INSERTE(LA,)


类JAVA语言描述
void union(LA LB){
n = LENGTH(LA); //求线性表LA的长度

for(i=0;i<=LB.LENGTH;i++){
x=GET(LB,i); //取出LB中第i个元素
k=LOCATE(LA,x);//与LA中元素一一比较


if(k=0){ 
 INSERTE(LA,n+1,x); //插入到末尾
 n=n+1; //表长加1
}


}
}






例2 归并两个有序的线性表LA和LB为一个新的线性表LC


算法思想
1、构建一张空LC表,设定变量i,j,初始值1,分别指向LA,LC中第一个元素DE,
k表示LC的长度 初始值0


2、当i<=LA.LENGTH AND j<=LB.LENGTH
判断 i<=j所指向的元素 将i插入LC 的k+1前  k,i值加1


否则j 插入到k+1前  k,j值加1


3、重复2


4、最后将未插入的元素插入到LC中


算法复杂度 O(LENGTH(LA)+LENGTH(LB))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值