【练习3.2】
给你一个链表L和另一个链表P,它们包含以升序排列的整数。操作printlots(L,P)将打印L中那些由P所指定的位置上的元素。
例如,如果p=1,3,4,6,那么,L的第一、第三、第四和第六个元素被打印出来。
你应该只使用基本的表操作,该过程的运行时间是多少?
Answer:
老样子,先放折叠的实测代码。
1 #include <iostream> 2 #include <string> 3 #include "linklist.h" 4 using namespace std; 5 using namespace linklist; 6 template class List<unsigned int>; 7 template class List<string>; 8 int main(void) 9 { 10 List<unsigned int> number; 11 12 //测试按升序插入 13 cout << "/*addinorder()*/" << endl; 14 number.addinorder(11); 15 number.addinorder(13); 16 number.addinorder(7); 17 number.addinorder(17); 18 number.addinorder(3); 19 number.addinorder(2); 20 number.addinorder(5); 21 number.traverse(); 22 cout << "\n/*end*/\n\n" << endl; 23 24 List<string> word; 25 cout << "/*initialize*/" << endl; 26 word.additem("The"); 27 word.additem("day"); 28 word.additem("after"); 29 word.additem("tommorow"); 30 word.additem("will"); 31 word.additem("be"); 32 word.additem("a"); 33 word.additem("sunny"); 34 word.additem("day"); 35 word.traverse(); 36 cout << "\n/*end*/\n\n" << endl; 37 38 //测试printlots,打印word的第2,3,5,7个元素 39 cout << "/*printlots()*/" << endl; 40 word.printlots(number); 41 cout << "\n/*end*/\n\n" << endl; 42 43 system("pause"); 44 }