归并过程:已知两个有序的顺序表 La 和 Lb ,将其合并成一个有序的顺序表 Lc 。 顺序表定义如下: typedef struct { ElemType *elem; int length; int listsize }SqList; void MergeList_Sq(SqList La, SqList Lb, SqList &Lc) { // 已知顺序线性表 La 和 Lb 的元素按值非递减排列。 // 归并 La 和 Lb 得到新的顺序线性表 Lc , Lc 的元素也按值非递减排列。 ElemType *pa,*pb,*pc,*pa_last,*pb_last; pa = La.elem; pb = Lb.elem; Lc.listsize = Lc.length = La.length+Lb.length; pc = Lc.elem = (ElemType *)malloc(Lc.listsize*sizeof(ElemType)); if (!Lc.elem) exit(OVERFLOW); // 存储分配失败 pa_last = La.elem+La.length-1; pb_last = Lb.elem+Lb.length-1; while ( 1 ) { // 归并 if ( 2 ) *pc++ = *pa++; else *pc++ = *pb++; } while (pa <= pa_last) 3 ; while (pb <= pb_last) 4 ; } // MergeList-笔试面试资料

这是qklbishe.com第19069 篇笔试面试资料
提供答案分析,通过本文《归并过程:已知两个有序的顺序表 La 和 Lb ,将其合并成一个有序的顺序表 Lc 。 顺序表定义如下: typedef struct { ElemType *elem; int length; int listsize }SqList; void MergeList_Sq(SqList La, SqList Lb, SqList &Lc) { // 已知顺序线性表 La 和 Lb 的元素按值非递减排列。 // 归并 La 和 Lb 得到新的顺序线性表 Lc , Lc 的元素也按值非递减排列。 ElemType *pa,*pb,*pc,*pa_last,*pb_last; pa = La.elem; pb = Lb.elem; Lc.listsize = Lc.length = La.length+Lb.length; pc = Lc.elem = (ElemType *)malloc(Lc.listsize*sizeof(ElemType)); if (!Lc.elem) exit(OVERFLOW); // 存储分配失败 pa_last = La.elem+La.length-1; pb_last = Lb.elem+Lb.length-1; while ( 1 ) { // 归并 if ( 2 ) *pc++ = *pa++; else *pc++ = *pb++; } while (pa <= pa_last) 3 ; while (pb <= pb_last) 4 ; } // MergeList-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

归并过程:已知两个有序的顺序表 La Lb ,将其合并成一个有序的顺序表 Lc

顺序表定义如下:

typedef struct

{

ElemType *elem;

int length;

int listsize

}SqList;

void MergeList_Sq(SqList La, SqList Lb, SqList &Lc) {

// 已知顺序线性表 La Lb 的元素按值非递减排列。

// 归并 La Lb 得到新的顺序线性表 Lc Lc 的元素也按值非递减排列。

ElemType *pa,*pb,*pc,*pa_last,*pb_last;

pa = La.elem; pb = Lb.elem;

Lc.listsize = Lc.length = La.length+Lb.length;

pc = Lc.elem = (ElemType *)malloc(Lc.listsize*sizeof(ElemType));

if (!Lc.elem)

exit(OVERFLOW); // 存储分配失败

pa_last = La.elem+La.length-1;

pb_last = Lb.elem+Lb.length-1;

while ( 1 ) { // 归并

if ( 2 ) *pc++ = *pa++;

else *pc++ = *pb++;

}

while (pa <= pa_last) 3 ;

while (pb <= pb_last) 4 ;

} // MergeList

归并过程:已知两个有序的顺序表  La  和  Lb  ,将其合并成一个有序的顺序表  Lc  。      顺序表定义如下:      typedef struct          {      ElemType *elem;      int length;      int listsize      }SqList;      void MergeList_Sq(SqList La, SqList Lb, SqList &amp;Lc) {         //  已知顺序线性表  La  和  Lb  的元素按值非递减排列。         //  归并  La  和  Lb  得到新的顺序线性表  Lc  ,  Lc  的元素也按值非递减排列。         ElemType *pa,*pb,*pc,*pa_last,*pb_last;         pa = La.elem;  pb = Lb.elem;         Lc.listsize = Lc.length = La.length+Lb.length;         pc = Lc.elem = (ElemType *)malloc(Lc.listsize*sizeof(ElemType));         if (!Lc.elem)         exit(OVERFLOW);  //  存储分配失败         pa_last = La.elem+La.length-1;         pb_last = Lb.elem+Lb.length-1;         while ( 1   ) {  //  归并         if (  2    ) *pc++ = *pa++;         else *pc++ = *pb++;         }         while (pa &lt;= pa_last)  3   ;            while (pb &lt;= pb_last)  4   ;         } // MergeList KissshotUnderheart
1.pa <=pa_last,pb<=pb_last
2.*pa<*pb
3.*pc++ = *pa++
4.*pc++ = *pb++

今天 10:17:54 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 归并过程:已知两个有序的顺序表 La 和 Lb ,将其合并成一个有序的顺序表 Lc 。 顺序表定义如下: typedef struct { ElemType *elem; int length; int listsize }SqList; void MergeList_Sq(SqList La, SqList Lb, SqList &Lc) { // 已知顺序线性表 La 和 Lb 的元素按值非递减排列。 // 归并 La 和 Lb 得到新的顺序线性表 Lc , Lc 的元素也按值非递减排列。 ElemType *pa,*pb,*pc,*pa_last,*pb_last; pa = La.elem; pb = Lb.elem; Lc.listsize = Lc.length = La.length+Lb.length; pc = Lc.elem = (ElemType *)malloc(Lc.listsize*sizeof(ElemType)); if (!Lc.elem) exit(OVERFLOW); // 存储分配失败 pa_last = La.elem+La.length-1; pb_last = Lb.elem+Lb.length-1; while ( 1 ) { // 归并 if ( 2 ) *pc++ = *pa++; else *pc++ = *pb++; } while (pa <= pa_last) 3 ; while (pb <= pb_last) 4 ; } // MergeList-笔试面试资料

提供最优质的资源集合

立即查看 了解详情