首页 > 代码库 > 单链表的反转
单链表的反转
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;
}
单链表的反转
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。