程序填空题:链式有序表的合并
已知单链表LA和LB的元素按值非递减排列
归并LA和LB得到新的单链表LC,LC的元素也按值非递减排列
```
#include
using namespace std;
#define ERROR 0
typedef struct LNode
{
int data;
struct LNode *next;
} LNode, *LinkList;
void InitList_L(LinkList &L)
{
L = new LNode;
L->next = NULL;
}
void input(LinkList &L, int n)
{
int i=0;
LNode *p, *r;
r = L;
while (i p = new LNode;
cin >> p->data;
p->next = NULL;
r->next = p;
r = p;
i++;
}
}
void output(LinkList L)
{
int i = 0;
LNode *p;
p = L->next;
while (p) {
if (i)
cout << ",";
cout << p->data;
p = p->next;
i = 1;
}
}
void MergeList_L(LinkList &LA, LinkList &LB, LinkList &LC)
{
LinkList pa, pb, pc;
pa = LA->next;
pb = LB->next;
LC = LA;
pc = LC;
while(@@[pa && pb](2))
{
if (pa->data <= pb->data)
{
@@[pc->next = pa; ](2)
@@[pc = pa;](2)
@@[pa = pa->next;](2)
} else {
@@[pc->next = pb;](2)
@@[pc = pb;](2)
@@[pb = pb->next;](2)
}
}
pc->next = pa ? pa : pb;
delete LB;
}
int main() {
LinkList La, Lb, Lc;
int num_a, num_b;
cin >> num_a >> num_b;
InitList_L(La);
input(La, num_a);
InitList_L(Lb);
input(Lb, num_b);
InitList_L(Lc);
MergeList_L(La, Lb, Lc);
output(Lc);
return 0;
}
```
答案:
第1空:pa && pb
第2空:pc->next = pa;
第3空:pc = pa;
第4空:pa = pa->next;
第5空:pc->next = pb;
第6空:pc = pb;
第7空:pb = pb->next;
归并LA和LB得到新的单链表LC,LC的元素也按值非递减排列
```
#include
using namespace std;
#define ERROR 0
typedef struct LNode
{
int data;
struct LNode *next;
} LNode, *LinkList;
void InitList_L(LinkList &L)
{
L = new LNode;
L->next = NULL;
}
void input(LinkList &L, int n)
{
int i=0;
LNode *p, *r;
r = L;
while (i
cin >> p->data;
p->next = NULL;
r->next = p;
r = p;
i++;
}
}
void output(LinkList L)
{
int i = 0;
LNode *p;
p = L->next;
while (p) {
if (i)
cout << ",";
cout << p->data;
p = p->next;
i = 1;
}
}
void MergeList_L(LinkList &LA, LinkList &LB, LinkList &LC)
{
LinkList pa, pb, pc;
pa = LA->next;
pb = LB->next;
LC = LA;
pc = LC;
while(@@[pa && pb](2))
{
if (pa->data <= pb->data)
{
@@[pc->next = pa; ](2)
@@[pc = pa;](2)
@@[pa = pa->next;](2)
} else {
@@[pc->next = pb;](2)
@@[pc = pb;](2)
@@[pb = pb->next;](2)
}
}
pc->next = pa ? pa : pb;
delete LB;
}
int main() {
LinkList La, Lb, Lc;
int num_a, num_b;
cin >> num_a >> num_b;
InitList_L(La);
input(La, num_a);
InitList_L(Lb);
input(Lb, num_b);
InitList_L(Lc);
MergeList_L(La, Lb, Lc);
output(Lc);
return 0;
}
```
答案:
第1空:pa && pb
第2空:pc->next = pa;
第3空:pc = pa;
第4空:pa = pa->next;
第5空:pc->next = pb;
第6空:pc = pb;
第7空:pb = pb->next;