程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 61. Rotate List,61rotatelist

61. Rotate List,61rotatelist

編輯:關於C語言

61. Rotate List,61rotatelist


Given a list, rotate the list to the right by k places, where k is non-negative.

For example:
Given 1->2->3->4->5->NULL and k = 2,
return 4->5->1->2->3->NULL.

k=2 就是向右移動2次

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     struct ListNode *next;
 6  * };
 7  */
 8 struct ListNode* rotateRight(struct ListNode* head, int k) {
 9     struct ListNode *cur;
10     cur = head;
11     int n = 1;
12     if(head == NULL)
13         return NULL;
14     while(cur->next != NULL)                 //求鏈表長度,把cur定位到尾結點
15     {
16         cur = cur->next;
17         n++;
18     }
19     k = n - k % n;                  //注意K有可能大於鏈表長度 要取余數
20     cur->next = head;
21     cur = head;
22     k--;
23     while(k)                                   //cur移動到斷開前的位置
24     {
25         cur = cur->next;
26         k--;
27     }
28     head = cur->next;
29     cur->next = NULL;
30     return head;
31 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved