Code:
#include <list>Template<typename elementtype>List<ElementType> Intersect (ConstList<elementtype> &list_1,ConstList<elementtype> &list_2) {List<ElementType>result; Auto LeftPos=List_1.begin (); Auto Rightpos=List_2.begin ();
while(LeftPos! = List_1.end () && rightpos! =List_2.end ()) { if(*leftpos > *rightpos) Rightpos++; Else if(*leftpos < *rightpos) LeftPos++; Else{result.push_back (*leftpos);++leftpos, + +Rightpos; } } returnresult;} Template<typename elementtype>List<ElementType> Union (ConstList<elementtype> &list_1,ConstList<elementtype> &list_2) {List<ElementType>result; Auto LeftPos=List_1.cbegin (); Auto Rightpos=List_2.cbegin (); while(LeftPos! = List_1.end () && rightpos! =List_2.end ()) { if(*leftpos < *rightpos) Result.push_back (*leftpos), + +LeftPos; Else if(*leftpos > *rightpos) Result.push_back (*rightpos), + +Rightpos; Else{result.push_back (*LeftPos); ++leftpos, + +Rightpos; } } while(LeftPos! =list_1.end ()) Result.push_back (*leftpos), leftpos++; while(Rightpos! =list_2.end ()) Result.push_back (*rightpos), rightpos++; returnresult;}
Data structure and algorithm analysis the intersection and algorithm of 3.4&3.5-linked list