链表逆序 【经典题目】
/************************************************************************* > File Name: code01.cpp > Author: Jeremy Wu > Created Time: Thu 04 Jun 2015 07:48:19 PM CST > Function: Linklist reverse ************************************************************************/ #include <iostream> #include <cmath> #include <ctime> #include <algorithm> using namespace std; struct Linklist { int key; Linklist * next; }; Linklist * init (int num) { srand ((int)time (NULL)); Linklist * head = new Linklist; head->key = rand () % 100; Linklist * p = head; while (num--) { Linklist * cur = new Linklist; cur->key = rand () % 100; p->next = cur; p = cur; } p->next = NULL; return head; } void print (Linklist * head) { int count = 0; while (head != NULL) { //cout << ++count << ": " << head->key << endl; cout << " " << head->key << " -> "; head = head->next; } } Linklist * linkReverse (Linklist * head) { if (head == null) return null; Linklist * cur = NULL; Linklist * pre = NULL; while (head != NULL) { cur = head; //assign cur head = head->next; //traverse cur->next = pre; //realize reverse pre = cur; //assign pre } return cur; } int main () { Linklist * head; head = init (7); print (head); cout << endl<<endl; head = linkReverse (head); print (head); return 0; }