线性表的类型定义

2.1线性表的类型定义

线性表一种最常用且最简单的数据结构

线性表是一个相当灵活的数据结构,它的长度可根据需要增长或缩短,即对线性表的数据元素

不仅可以进行访问还可以进行插入删除等操作。

抽象数据类型线性表的定义如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例2-1假设利用两个线性表LA和LB分别表示两个集合A和B(即线性表中的数据元素即为集合中的成员),现要求一个新的集合A=AUB。这就要求对线性表作如下操作:扩大线性表LA,将存在于线性表LB中而不存在于线性表LA中的数据元素插人到线性表LA中去。只要从线性表LB中依次取得每个数据元素,并依值在线性表LA中进行查访,若不存在,则插人之。上述操作过程可用下列算法描述之。(用上面给出的函数进行)

算法2.1

void union(List&La,List Lb){
//将所有在线性表Lb中但不在La中的数据元素插人到La中
La.len = ListLength(La);Lb.len = ListLength(Lb);//求线性表的长度
for(i =1;i<=L_len;i++{
	GetElem(Lb,i,e);//取Lb中第i个数据元素赋给e 
    if(!LocateElem(La,e,equal))
        ListInsert(La,++ La.len,e);
//La中不存在和e相同的数据元素,则插人之
}//union

例2-2已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列。例如,设LA =(3,5,8,11)
LB =(2,6,8,9,11,15,20)

LC =(2,3,5,6,8,8,9,11,11,15,20)

算法2.2

void MergeList(List La,List Lb,List&Lc){
//已知线性表La和Lb中的数据元素按值非递减排列。
//归并La和L得到新的线性表Lc,Lc的数据元素也按值非递减排列。
Initist(Ic);
i=j=1;k =0;
La.len =ListLength(La);Lb.len =ListLength(Lb);
while((i<=La-len)&&(j<=Lb-len)){//La和Lb均非空
    GetElem(La,i,ai);GetElem(Lb,j,bj);
        if(ai <=bj){
        ListInsert(Lc,++k,ai);++i;}
		else{
            ListInsert(Lc,++k,bj);++j;}
    /*在之前两线性表均有元素*/
    /*在此之后一个有元素一个无元素*/
	while(i<= La.len){
		GetElen(La,i++,ai);
        ListInsert(Lc,++k,ai);}
    while(j<=Lb-len){
        GetElen(Lb,j++,bj);
        ListInsert(Lc,t+k,bj);}
 }//MergeList

注意双指针i和j
返回目录

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值