【练习3.12】
a.编写一个非递归过程以O(N)时间反转单链表。
b.使用常数附加空间编写一个过程以O(N)时间反转单链表。
Answer:
这题的b貌似没啥意义,在a小题里直接用头插法,不断地将头节点后移,
并将当前头节点所在的节点的后继指针指回前驱就能倒置链表了,不需要额外的空间。
所以就写了a。
测试代码:
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> number; 9 10 //测试插入 11 cout << "/*additem()*/" << endl; 12 number.additem(2); 13 number.additem(3); 14 number.additem(5); 15 number.additem(7); 16 number.additem(11); 17 number.traverse(); 18 cout << "\n/*end*/\n\n" << flush; 19 20 number.reverse(); 21 22 number.traverse(); 23 24 system("pause"); 25 }