-->
当前位置:首页 > 题库 > 正文内容

程序填空题:顺序有序表的合并

Luz4年前 (2021-05-10)题库2167
已知顺序有序表LA和LB的元素按值非递减排列
归并LA和LB得到新的顺序有序表LC,LC的元素也按值非递减排列

```
#include
#include
using namespace std;
#define MAXSIZE 100
#define ERROR 0

typedef struct
{
int *elem;
int length;
} SqList;


void InitList_Sq(SqList &L, int n)
{
L.elem = new int[MAXSIZE];
if (!L.elem)
exit(0);
L.length = 0;
}

void input(SqList &L, int n)
{ int i=0;
while (i cin >> L.elem[i];
i++;
}
L.length = i;
}

void output(SqList L)
{
int i;
for (i = 0; i < L.length; i++) {
if (i)
cout << ",";
cout << L.elem[i];
}
}

void MergeList_Sq(SqList LA, SqList LB, SqList &LC)
{
int *pa, *pb, *pc, *pa_last, *pb_last;
pa = LA.elem;
pb = LB.elem;
LC.length = LA.length + LB.length;
LC.elem = new int[LC.length];
pc = LC.elem;
pa_last = LA.elem + LA.length - 1;
pb_last = LB.elem + LB.length - 1;
while (@@[pa <= pa_last && pb <= pb_last](2))
{
if (*pa <= *pb)
@@[*pc++ = *pa++;](2)
else
@@[*pc++ = *pb++;](2)
}
while (@@[pa <= pa_last](2))
*pc++ = *pa++;
while (@@[pb <= pb_last](2))
*pc++ = *pb++;
}

int main() {
SqList La, Lb, Lc;
int num_a = 0, num_b = 0;
cin >> num_a >> num_b;
InitList_Sq(La, num_a);
input(La, num_a);

InitList_Sq(Lb, num_b);
input(Lb, num_b);

MergeList_Sq(La, Lb, Lc);

output(Lc);
return 0;
}
```






答案:
第1空:pa <= pa_last && pb <= pb_last

第2空:*pc++ = *pa++;

第3空:*pc++ = *pb++;

第4空:pa <= pa_last

第5空:pb <= pb_last

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。