单链表原地反转
编写一个非递归过程以O(N)时间反转单链表
#include <iostream> #include "./List.h"//利用我们自己实现的单链表List using namespace std; void PrintList(List L) { if(NULL == L) return; Position pos = First(L); cout<<"List L:"; while(NULL != pos) { cout<<Retrieve(pos)<<"->"; pos = pos->next; } cout<<"NULL"<<endl;; } void ReverseListInPlace(List list)//使用头插法原地反转 { if(NULL == list) return ; Position pos = First(list); list->next = NULL; while(NULL != pos) { Position tmp = pos->next; pos->next = list->next; list->next = pos; pos = tmp; } } int main(int argc, char const *argv[]) { List l = CreateEmptyList(); for(int i = 0; i != 10; ++i) PushBack(i, l); cout<<"Before reverse the list:"; PrintList(l); cout<<endl; ReverseListInPlace(l); cout<<"After reverse the list:"; PrintList(l); cout<<endl; return 0; }