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

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

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

  2021-03-29 我要评论
想了解C语言数据结构旋转链表的实现的相关内容吗,在本文为您仔细讲解旋转链表的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:C语言数据结构旋转链表,旋转链表的实现方法,下面大家一起来学习吧。

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

实例:

给出链表1->2->3->4->5->null和k=2

返回4->5->1->2->3->null

分析

感觉很直观,直接把分割点找出来就行,记得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语言数据结构旋转链表的实现,如有疑问请留言或者到本站社区交流讨论,本站关于数据结构的文章还有很多,希望大家搜索查阅,大家共同进步!

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们