zoukankan      html  css  js  c++  java
  • 按每k个结点反转链表

     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 }
    我是。。。
  • 相关阅读:
    跳码与一机多终端
    SCRUM REPORT DIRECTORY
    ASE Backend Review
    ASE Beta Sprint
    ASE Beta Sprint
    ASE Backend Alpha Sprint Review
    ASE Alpha Sprint
    ASE Alpha Sprint
    ASE Alpha Sprint
    ASE Alpha Sprint
  • 原文地址:https://www.cnblogs.com/nupt-heyj/p/3684024.html
Copyright © 2011-2022 走看看