#include<iostream> #include<malloc.h> using namespace std; struct node { int data; node* next; }; node *L; node* reverse(node *h) { node *p,*q; p=NULL; q=h; while(q!=NULL) { h=h->next; q->next=p; p=q; q=h; } h=p; return h; } int main() { node *q; L=(node*)malloc(sizeof(node)); L->next=NULL; q=L; for(int i=1;i<=10;i++) { node *p; p=(node*)malloc(sizeof(node)); p->data=i; q->next=p; q=p; q->next=NULL; } L=L->next; L=reverse(L); while(L!=NULL) { cout<<L->data<<" "; L=L->next; } system("pause"); return 0; }这个算法的关键在于每次都是把修改后的q指向的节点拿出来,然后连接到原来p为头节点的链表上,
原文:http://blog.csdn.net/killer_in_silence/article/details/18675873