/**//************************************************************* * FileName: reverseLink.cpp * Description: implemention for the reverse of a link * Author: Cui Xiaofeng * Date: 2008/03/22***************************************************************/#include <iostream>using namespace std;/**//* link node struct */struct Node...{public: Node():val(0), next(NULL) ...{ } Node(int _val, Node* _next):val(_val), next(_next) ...{ } friend class Link;private: int val; Node *next;};/**//* link definition */class Link...{public: Link(Node *_head = NULL):head(_head) ...{ } ~Link() ...{ Node *p = head, *q = head; while (p != NULL) ...{ q = p->next; delete p; p = q; } } Node* CreateLink(); Node* ReverseLink(); void PrintLink();private: Node *head;};void Link::PrintLink()...{ for (Node *n = head; n != NULL; n = n->next) ...{ cout << n->val << endl; }}Node* Link::CreateLink()...{ int a[] = ...{0, 2, 3, 6, 7, 9}; for (int i = 0; i < sizeof(a)/sizeof(int); i++) ...{ Node *node = new Node(a[i], head); head = node; } return head;}Node* Link::ReverseLink()...{ Node *p, *lp, *rp; lp = head; p = lp->next; lp->next = NULL; while (p != NULL) ...{ rp = p->next; p->next = lp; lp = p; p = rp; } head = lp; /**//* the following is better, copied from others */ /**//* p = head; lp = NULL; rp = NULL; while (p != NULL) { rp = p->next; p->next = lp; lp = p; p = rp; } head = lp; */ return head;}int main()...{ Link l; l.CreateLink(); l.PrintLink(); cout << "反转后:" << endl; l.ReverseLink(); l.PrintLink(); return 0;}