6 求序列的交集(链表)
作者: Turbo时间限制: 1S章节: DS:数组和链表
问题描述
使用带头结点的单链表编程:有两个序列,分别表示两个集合。求它们的交集并输出。
输入说明
第一行输入序列A的信息:
第一个整数n(0<=n<=100),表示共有n个元素,其后有n个整数,表示n个元素的数据
第一行输入序列B的信息:
第一个整数n(0<=n<=100),表示共有n个元素,其后有n个整数,表示n个元素的数据
输出说明
输出交集的元素序列,输出格式见范例。
如果交集为空,则输出“head–>tail”
交集里的元素顺序,依照其在序列A中的顺序。
比如:
序列:
A:5 3 2 7
B:1 3 5 8
则交集为5和3,因为在序列A中,5在3的前面,所以在交集里5也在3的前面。
输入范例
4 5 3 2 7
4 1 3 5 8
输出范例
head-->5-->3-->tail
解题思路
1.首先根据输入的数据用尾插法创建两个链表
2.求交集:对每一个a中节点都遍历一遍b链表,用flag标记是否找到值相等的节点,如果找到了中断遍历过程,如果没有找到就将该节点从a链表中删除掉。
详细实现
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
using namespace std;
struct ListNode
{
int num;
struct List