转载地址:http://blog.youkuaiyun.com/feliciafay/article/details/6841115
如何把一个单链表进行反转?
方法1:将单链表储存为数组,然后按照数组的索引逆序进行反转。
方法2:使用3个指针遍历单链表,逐个链接点进行反转。
方法1:
浪费空间。
方法2:
使用p和q两个指针配合工作,使得两个节点间的指向反向,同时用r记录剩下的链表。
p = head;
q = head->next;

head->next = NULL;
现在进入循环体,这是第一次循环。
r = q->next;
q->next = p;

p = q;
q =r; 
第二次循环。
r = q->next

q->next = p;
p = q;

q = r
第三次循环。。。。。
具体代码如下
ActList* ReverseList2(ActList* head)
{
//ActList* temp=new ActList;
if(NULL==head|| NULL==head->next) return head;
ActList* p;
ActList* q;
ActList* r;
p = head;
q = head->next;
head->next = NULL;
while(q){
r = q->next; //
q->next = p;
p = q; //
q = r; //
}
head=p;
return head;
}
本文详细介绍了单链表反转的两种方法:一种是通过数组实现,但会消耗额外空间;另一种是使用三个指针遍历链表,逐个链接点进行反转,更节省空间。并提供了具体代码实现。
1202

被折叠的 条评论
为什么被折叠?



