【练习3.4】
给定两个已排序的表L1和L2,只使用基本的表操作编写计算L1∩L2的过程。
【练习3.5】
给定两个已排序的表L1和L2,只使用基本的表操作编写计算L1∪L2的过程。
思路比较简单,测试代码如下,两道题比较相似,测试代码就放一起了。
1 #include <iostream> 2 #include "linklist.h" 3 using namespace std; 4 using namespace linklist; 5 template class List<int>; 6 int main(void) 7 { 8 List<int> primer; 9 10 //原始链表 11 cout << "/*additem()*/" << endl; 12 primer.additem(2); 13 primer.additem(3); 14 primer.additem(5); 15 primer.additem(7); 16 primer.additem(8); 17 primer.additem(11); 18 primer.additem(13); 19 primer.additem(17); 20 primer.additem(23); 21 primer.additem(24); 22 primer.traverse(); 23 cout << "\n/*end*/\n\n" << endl; 24 25 //测试求交 26 cout << "/*intersection()*/" << endl; 27 List<int> odd; 28 odd.additem(3); 29 odd.additem(5); 30 odd.additem(7); 31 odd.additem(9); 32 odd.additem(11); 33 odd.additem(13); 34 odd.additem(15); 35 odd.additem(17); 36 odd.additem(19); 37 odd.additem(21); 38 odd.additem(23); 39 odd.additem(25); 40 odd.additem(27); 41 odd.additem(29); 42 odd.traverse(); 43 cout <<"\n"<<flush; 44 odd.intersecton(primer); 45 odd.traverse(); 46 cout << "\n/*end*/\n\n" << endl; 47 48 //测试求并 49 cout << "/*join()*/" << endl; 50 List<int> natural; 51 natural.additem(1); 52 natural.additem(2); 53 natural.additem(4); 54 natural.additem(8); 55 natural.additem(16); 56 natural.traverse(); 57 cout << endl;; 58 natural.join(primer); 59 natural.traverse(); 60 cout << "\n/*end*/\n\n" << endl; 61 62 system("pause"); 63 }