学习学习,搜到篇文章不错,贴上来,
http://blog.csdn.net/niuer09/article/details/5961004
我自己根据代码画了图,理解了,稍后也贴上来。
大概的思路是,
先找到
原来是head->1->2
p = head->next 例子中的1
q= head->next->next 例子中的2
//
第一次循环:
t=head->next->next->next,就是例子中的3
先把2->3的链给断掉让 1<- 2,让2指向1
然后再往后推进
p= head->next->next 例子中的2
q=head->next->next->next,就是例子中的3
//
第二次循环
t=head->next->next->next->next, 4
让3指向2,2<-3
如此循环
//
出了循环了,留意的话你会发现,1->2 的这个链还没有断掉,这里就把这个给断掉,因为是尾巴了,就不用赋值了,
head->next->next = NULL; /*设置链表尾*/
然后再拿head 去指向p,就是原来的尾巴,现在的头,10。
head->next = p; /*调整链表头*/
至此over。