算法描述
关于这个问题,解决办法是遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转,利用已经存储的指针往后继续遍历。
算法实现
node * reverse(node * head) { node *p, *q, *r; if(head->next == NULL)/*链表为空*/ return head; p = head->next; q = p->next; p->next = NULL;/*原头结点指向空*/ while(q) { r = q->next; q->next = p; p = q; q = r; } head->next = p;/*原末结点为第一个结点*/ return head; }