#include<stdio.h>
#include<stdlib.h>
typedef struct LNode {
int data; // 数据域
struct LNode *next; // 指针域
} LNode, *LinkList;
void MergeLinkList(LinkList &La, LinkList &Lb) {
LinkList pa, pb;
pa = La->next;
pb = Lb->next;
LinkList pc = La;
while (pa&&pb)
{
if (pa->data <= pb->data) {
LinkList p = pa->next;
pa->next = NULL;
pc->next = pa;
pc = pc->next;
pa = p;
}
else {
LinkList p = pb->next;
pb->next = NULL;
pc->next = pb;
pc = pc->next;
pb = p;
}
}
pc->next = pa ? pa : pb;
while (La->next != NULL)
{
printf("%3d", La->next->data);
La = La->next;
}
printf("\n");
}
void CreateList_L(LinkList &L, int n) {
// 逆序输入 n 个数据元素,建立带头结点的单链表
L = (LinkList)malloc(sizeof(LNode));
LinkList p;
int t;
int k = 0;
int num[5];
for (int i = 0; i < 5; i++) {
printf("第%d个数据:\n", i+1);
scanf("%d", &num[i]);
}
for (int i = 0; i < 5 ; i++)
{
for (int j = 0; j< 5 - 1 - i; j++)
{
if (num[j] < num[j+1])
{
t = num[j];
num[j] = num[j+1];
num[j+1] = t;
}
}
}
L->next = NULL; //建立带头结点的单链表
for (int i = 5; i > 0; --i) {
p = (LinkList)malloc(sizeof(LNode));
p->data = num[k++]; // 输入元素值
p->next = L->next; L->next = p; // 插入
}
} // CreateList_L
void printList(LinkList &L) {
while (L->next!=NULL)
{
printf("%3d", L->next->data);
L = L->next;
}
printf("\n");
}
void printList1(LinkList &L) {
while (L->next != NULL)
{
printf("%3d", L->next->data);
L = L->next;
}
printf("\n");
}
int main()
{
LinkList L1,L2;
int a=5;
int b = 1;
printf("创建L1:\n");
CreateList_L(L1, a);
printf("L1结果如下:\n");
printList(L1);
printf("创建L2:\n");
CreateList_L(L2, a);
printf("L2结果如下:\n");
printList(L2);
MergeLinkList(L1, L2);
printf("合并结果如下:\n");
printList1(L1);
return 0;
}
求大佬解释为什么我的线性表合成之后输出来是空的