先附上图解释一下: void Reverse(LinkList *&h) { if(NULL == h || NULL == h->next) return ; LinkList *p = h->next, *q = p->next; h->next = NULL; while(NULL != p) { p->next = h->next; //让新结点的next指向h的下一个结点,头插 p->prior = h; //把新结点链到h上,头插完成 p = q; //原链表中的指针后移 q = p->next; //现在的p指针到了原来的q的位置 } } 说明:破坏了原来的链表。