首页 > 代码库 > 单链表的反转

单链表的反转


ActList* ReverseList2(ActList* head) { if(NULL==head|| NULL==head->next) return head; //少于两个节点没有反转的必要。 ActList* p,* q,* r; // 通过三个指针 p = head; // 先保存head q = head->next;// 保存第二个
// 这里要先处理最后一个 head->next = NULL; //旧的头指针是新的尾指针,next需要指向NULL while(q){ r = q->next; //先保留下一个step要处理的指针 q->next = p; //然后p q交替工作进行反向 p = q; // p指针移动:也就是将地址重新赋值 q = r; // q指针移动 } head=p; // 最后q必然指向NULL,所以返回了p作为新的头指针 return head; }

 

单链表的反转