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

所属分类: 软件编程 / C 语言 阅读数: 39
收藏 0 赞 0 分享

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语言数据结构旋转链表的实现,如有疑问请留言或者到本站社区交流讨论,本站关于数据结构的文章还有很多,希望大家搜索查阅,大家共同进步!

更多精彩内容其他人还在看

C 语言基础教程(我的C之旅开始了)[三]

C 语言基础教程(我的C之旅开始了)[三]
收藏 0 赞 0 分享

C 语言基础教程(我的C之旅开始了)[四]

C 语言基础教程(我的C之旅开始了)[四]
收藏 0 赞 0 分享

C 语言基础教程(我的C之旅开始了)[五]

C 语言基础教程(我的C之旅开始了)[五]
收藏 0 赞 0 分享

C 语言基础教程(我的C之旅开始了)[六]

C 语言基础教程(我的C之旅开始了)[六]
收藏 0 赞 0 分享

C 语言基础教程(我的C之旅开始了)[七]

C 语言基础教程(我的C之旅开始了)[七]
收藏 0 赞 0 分享

C 语言基础教程(我的C之旅开始了)[八]

C 语言基础教程(我的C之旅开始了)[八]
收藏 0 赞 0 分享

C 语言基础教程(我的C之旅开始了)[九]

C 语言基础教程(我的C之旅开始了)[九]
收藏 0 赞 0 分享

C 语言基础教程(我的C之旅开始了)[十]

C 语言基础教程(我的C之旅开始了)[十]
收藏 0 赞 0 分享

tc编译的dos程序和vc编译的win32控制台程序的异同

tc编译的dos程序和vc编译的win32控制台程序的异同
收藏 0 赞 0 分享

C语言WinSock学习笔记第1/2页

本篇文章主要介绍了C语言WinSock学习笔记,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多