7 求有序序列的交集(链表)
作者: Turbo时间限制: 1S章节: DS:数组和链表
问题描述
使用带头结点的单链表编程:
有两个有序序列,分别表示两个集合。
求它们的交集并输出。
注意:这里要利用到“有序”的特性。
输入说明
第一行输入序列A的信息:
第一个整数n(0<=n<=100),表示共有n个元素,其后有n个整数,表示n个元素的数据
第一行输入序列B的信息:
第一个整数n(0<=n<=100),表示共有n个元素,其后有n个整数,表示n个元素的数据
注:两个序列输入时保证有序
输出说明
输出交集的元素序列,输出格式见范例。
如果交集为空,则输出“head–>tail”
输入范例
4 1 3 5 7
4 1 4 5 8
输出范例
head-->1-->5-->tail
解题思路
因为两个链表的有序的,求交集的过程更简单,在两个链表指针都不为空的情况下:如果两个指针的值相等,则是公共节点保留下来;如果一个的值小于另一个,则将小的向后找下一个节点。
详细实现
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
using namespace std;
struct ListNode
{
int num;
struct ListNode *next;