【leetcode】【单链表】【61】Merge k Sorted Lists

来源:互联网 发布:花千骨进阶数据大全 编辑:程序博客网 时间:2024/04/28 07:23
#include<iostream>using namespace std;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||head->next == NULL)return head;int numOfNodes=0;ListNode* cur = head;ListNode* last = head;while (cur){//找出链表长度++numOfNodes;last = cur;cur = cur->next;}k = k%numOfNodes;if (k == 0) //注意,开始没有考虑到,要右旋转长度为0return head;ListNode* preCur = head;cur = head;k = numOfNodes - k;while (k--){preCur = cur;cur = cur->next;}preCur->next = NULL;last->next = head;head = cur;return head;}ListNode* createList(ListNode* head){int numOfNode;int value;cout << "please input number of listNode:";cin >> numOfNode;cin >> value;head = new ListNode(value);ListNode* cur = head;for (int i = 1; i < numOfNode; ++i){cin >> value;ListNode* temp = new ListNode(value);cur->next = temp;cur = temp;}return head;}void printNode(ListNode* head){ListNode* cur = head;while (cur){cout << cur->val << " ";cur = cur->next;}cout << endl;}};int main(){ListNode* head = NULL;Solution lst;head = lst.createList(head);lst.printNode(head);head = lst.rotateRight(head, 0);lst.printNode(head);system("pause");return 0;}

0 0
原创粉丝点击