#include<iostream>
#include<malloc.h>
#include<cstdio>
using namespace std;
typedef struct LNode{
int data;
int sum = 0;
struct LNode *next;
}LNode,*List;
void creat_list(List &L){
L = (LNode *)malloc(sizeof(LNode));
L->next = NULL;
int temp;
LNode *head = L;
while(cin>>temp && temp != -1){
LNode *p = (LNode *)malloc(sizeof(LNode));
p->data = temp;
if(!(L->next)){
p->next = L->next;
L->next = p;
head = p;
}
else{
p->next = head->next;
head->next = p;
head = p;
}
}
}
int equal_list(List &L1,List &L2,List &L3){
L3 = (LNode *)malloc(sizeof(LNode));
L3->next = NULL;
LNode *pa = L1->next;
LNode *pb = L2->next;
LNode *pc = L3;
while(pa && pb){
if(pa->data > pb->data)pb = pb->next;
else if(pa->data < pb->data)pa = pa->next;
else {
pc->next = pa;
pc = pa;
pa = pa->next;
pb = pb->next;
}
}
pc->next = NULL;
}
void print_list(List &L){
LNode *p = L->next;
int time = 1;
while(p){
if(time == 1)cout<<p->data;
else cout<<" "<<p->data;
p = p->next;
time++;
}
}
int main(){
List L1,L2,L3;
creat_list(L1);
creat_list(L2);
equal_list(L1,L2,L3);
if(!(L3->next))cout<<"NULL";
else print_list(L3);
}
链表求交集(时间复杂度O(n))
猜你喜欢
转载自blog.csdn.net/peachhhh/article/details/108555843
今日推荐
周排行