已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。
输入格式:
输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。
输出格式:
在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。
输入样例:
1 2 5 -1
2 4 5 8 10 -1
输出样例:
2 5
核心代码:
实际上就是实现两个非降序链表中元素的比较,并用相同的元素构建一个新链表
实现两个非降序链表的比较其实很简单,因为链表中的元素是已经排好序了的,所以可以从头开始对两个链表依次进行比较,比较结果较小的链表的指针向后移动一位,再次进行比较,直到其中一个链表遍历完毕。
代码如下:
#include<stdio.h>
#include<stdlib.h>
struct Node
{
int data;
struct Node* next;
};
typedef struct Node* ListNode;
int main()
{
int x;
ListNode L1,L2,L3;//三个链表都有头结点
L1->next=NULL