重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
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语言数据结构旋转链表的实现,如有疑问请留言或者到本站社区交流讨论,本站关于数据结构的文章还有很多,希望大家搜索查阅,大家共同进步!