首页 > 其他 > 详细

按每k个结点反转链表

时间:2014-04-24 04:48:18      阅读:591      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
 1 //按每k个结点反转链表
 2 Node* turn_k(Node* head,int n,int k)
 3 {
 4     Node* p=head;
 5     for(int t=1;t<k;t++)  p=p->next; //为了获取最后的返回值,也就是链表指针
 6 
 7     Node* cur=head; //为链表反转而准备的三个辅助指针cur,pre,pnext
 8     Node *pre=NULL;
 9     Node* pnext=NULL;
10     Node* r=NULL;  //r是处理每段尾(首)部的辅助指针
11     Node *q=head;  //q是为了获取下一链表段反转后的头地址
12     int m=n/k;
13     for(int i=1;i<=m;i++)
14     {
15         r = cur;   //指针r保存当前将要反转段的尾结点
16         for(int j=1;j<=k;j++)
17         {
18             pnext = cur->next;
19             cur->next = pre;
20             pre = cur;
21             cur = pnext;
22         }
23         if(i<m)
24         {    q=cur;
25             for(int t=1;t<k;t++)  q=q->next;
26             r->next=q;       //保证反转后链表段尾连上下一段反转后的头
27         }
28         if(i==m) r->next=cur;
29     }
30     return p;
31 }
bubuko.com,布布扣

 

按每k个结点反转链表,布布扣,bubuko.com

按每k个结点反转链表

原文:http://www.cnblogs.com/nupt-heyj/p/3684024.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!