现在的位置: 首页 > 综合 > 正文

线性表的几个例子

2017年03月26日 ⁄ 综合 ⁄ 共 1253字 ⁄ 字号 评论关闭

例子:假设有两个集合A,B分别用两个线性表LA和LB表示
要求一个新的集合A=AUB
解题思路:1.从线性表LB中一次取得每个数据元素:GetElem(L,B,i)->e
                    2.依值在线性表LA中进行查房:LocateElem(L,A,equal())
            3.若不存在,则插入:ListInsert(L,A,n+1,e);
          
例子:已知一个非纯集合B,是构造一个纯集合A,使A中只包含B中所有值各不相同的数据元素

void purge(List&La,List Lb){
InitList(La);     //设置空的线性表LA
La_len=ListLength(La);
Lb_len=ListLength(Lb);  //求线性表的长度
for(int i=1;i<Lb._len;i++){
GetElem(Lb,i,e);   //从线性表中得到第i个元素
if(!LocateElem(La,e,equal()){
++La_len;
ListTnsert(La,La_len,e);  //元素e插入线性表中
}
}
}


如果是有序的:aabbccccddefgghk

void purge(List&La,List Lb){
InitList(La);     //设置空的线性表LA
La_len=ListLength(La);
Lb_len=ListLength(Lb);  //求线性表的长度
for(i=1;i<=Lb_len;i++){
GetElem(Lb,i,e);  //取Lb中第i个数据元素赋给e
if(ListEmpty(LA)||!equal(en.e)){
ListInsert(La,++La_len,e)
en=e;      //en总是刚刚插入的最后一个元素
}
}
}

例子:归并两个其数据元素按值非递减有序排列的线性表、
LA,LB,求得线性表LC也具有 同样的特性
设La=(a1...ai..an)  Lb=(b1....bj...bm)
Lc=(c1....ck...cm+n)
思路:分别从LA和LB中取当前元素ai,aj
       若ai<=bj,则将ai插入到LC中,否则将bj插入到LC中

void MergcList(List La,List Lb,List&LC){
InitList(Lc);
i=j=1;k=0;
La_len=ListLength(La);
Lb_len=ListLength(Lb);
whiel((i<=La_len)&&(j<=Lb_len)){
//La和Lb均非空
GetElement(La,i,ai);
GetElement(Lb,j,bj);
if(ai<=bj){
ListInsert(Lc,++k,ai);++i}
else{ListInsert(Lc,++k,bj);++j;}
}

while(i<=La_len){
GetElem(La,i++;ai);
ListInsert(Lc,++k,ai)
}

while(j<=Lb_len){
GetElem(Lb,j++,bj);
ListInsert(Lc,++k,bj);
}
}

 

抱歉!评论已关闭.