源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C语言数据结构旋转链表的实现

  • 时间:2021-10-02 11:58 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C语言数据结构旋转链表的实现
[b]C语言数据结构旋转链表的实现[/b] [b]实例:[/b] 给出链表1->2->3->4->5->null和k=2 返回4->5->1->2->3->null [b]分析[/b]: 感觉很直观,直接把分割点找出来就行,记得k可能大于len,要取模 代码:
/** 
 * Definition for singly-linked list. 
 * struct ListNode { 
 *   int val; 
 *   ListNode *next; 
 *   ListNode(int x) : val(x), next(NULL) {} 
 * }; 
 */ 
class Solution { 
public: 
  /** 
   * @param head: the list 
   * @param k: rotate to the right k places 
   * @return: the list after rotation 
   */ 
  ListNode *rotateRight(ListNode *head, int k) { 
    // write your code here 
    if(head==NULL) 
      return head; 
    int len = 0; 
    ListNode*temp = head; 
    while(temp) 
    { 
      len++; 
      temp = temp->next; 
    } 
    k%=len; 
    if(k==0) 
      return head; 
    k = len-k; 
    temp = head; 
    while(k>1) 
    { 
      temp = temp->next; 
      k--; 
    } 
    ListNode*newStart = temp->next; 
    temp->next = NULL; 
    temp = newStart; 
    while(temp->next) 
      temp = temp->next; 
    temp->next = head; 
    return newStart; 
  } 
}; 
 以上就是C语言数据结构旋转链表的实现,如有疑问请留言或者到本站社区交流讨论,本站关于数据结构的文章还有很多,希望大家搜索查阅,大家共同进步!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部