问题遇到的现象和发生背景
#####裁判代码:
#include <stdio.h>
#include <stdlib.h>
typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node {
ElementType Data;
| 表头 | 表头 |
| ------ | ------ |
| 单元格 | 单元格 |
| 单元格 | 单元格 |
PtrToNode Next;
};
typedef PtrToNode List;
List Read(); /* 细节在此不表 */
void Print( List L ); /* 细节在此不表;空链表将输出NULL */
List Merge( List L1, List L2 );
int main()
{
List L1, L2, L;
L1 = Read();
L2 = Read();
L = Merge(L1, L2);
Print(L);
Print(L1);
Print(L2);
return 0;
}
/* 你的代码将被嵌在这里 */
问题相关代码,请勿粘贴截图
List Merge( List L1, List L2 ){
List p = (List) malloc(sizeof (List));
List p1 = (List) malloc(sizeof (List));
while(1) {
if (L1 == NULL || L2 == NULL){
for(;L2;L2=L2->Next)
{
p1->Data=L2->Data;
p1=p1->Next;
}
break;
}
while (L1->Data) {
p->Data = L1->Data;
while (L2->Data) {
if (p->Data <= L2->Data) {
p1->Data = p->Data;
L2 = L2->Next;
}
else break;
}
L1 = L1->Next;
p = p->Next;
p1 = p1->Next;
}
}
return p1;
}
运行结果及报错内容
a.c: In function ‘Read’:
a.c:17:2: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &N);
^~~~~~~~~~~~~~~
a.c:22:3: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &Rear->Next->Data);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我的解答思路和尝试过的方法
使用指针p,存放L1的内容.用p判断是否小于L2;如果小于则存放在指针p1.函数返回p1;