61. Rotate List

来源:互联网 发布:网民网络应用 编辑:程序博客网 时间:2024/05/18 13:43
/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* rotateRight(ListNode* head, int k) {        if (head == NULL)return NULL;int count = 0;ListNode* L = new ListNode(0);ListNode* q = NULL, *p = NULL,*s=NULL;L->next = head;s =p= head;while (s != NULL)//计算链表的长度;{count++;s = s->next;}k=k%count;if (k==0)return head;for (int i = 0; i < count - k - 1; i++)//找到将要成为尾结点的结点;{p = p->next;}q = p->next;//将要成为首结点的结点;p->next = NULL;L->next = q;while (q ->next!= NULL)//寻找将要链接原首结点的结点;{q = q->next;}q->next = head;return L->next;    }};

0 0