List结构的定义如下:
typedef struct Node *PtrToNode;
struct Node {
ElementType Data; /* 存储结点数据 */
PtrToNode Next; /* 指向下一个结点的指针 */
};
typedef PtrToNode List; /* 定义单通信 api接口,通达信 api接口,链表类型 */
为什么要将L1和L2头结点的Next指针设置为NUL?
将L1和L2头结点的Next指针设置为NUL,使合并后的新通达信 通达信 链表末端的api接口指向NULL,避免错误的next指针指向api接口。如果Next指针不清空头结点,可能会导致合并后的新链表结尾部分指向L1和L2的原始结点,从而产生意想不到的结果。
另外,合并链表后,L1和L2不再合法,因为它们各自的链表结构发生了变化。如果后续需要操作,可能会产生未知的副作用。因此,将头结点Next指针设置为NULL是避免不必要错误的好习惯。
L1和L2是给定带头结点的单链表,其结点存储的数据有序增加;函数Merge将L1和L2合并为非递减整数序列。应直接使用原序列中的结点,并返回带头结点的链表头指针。
输入样例:
3
1 3 5
5
2 4 6 8 10
裁判测试程序样例:
#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 ); /* 这里没有细节;空链表将输出NULLL */
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 );
文章为作者独立观点,不代表股票交易接口观点