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