C语言数据结构旋转链表的实现
C语言数据结构旋转链表的实现
实例:
给出链表1->2->3->4->5->null和k=2
返回4->5->1->2->3->null
分析:
感觉很直观,直接把分割点找出来就行,记得k可能大于len,要取模
代码:
/** *Definitionforsingly-linkedlist. *structListNode{ *intval; *ListNode*next; *ListNode(intx):val(x),next(NULL){} *}; */ classSolution{ public: /** *@paramhead:thelist *@paramk:rotatetotherightkplaces *@return:thelistafterrotation */ ListNode*rotateRight(ListNode*head,intk){ //writeyourcodehere if(head==NULL) returnhead; intlen=0; ListNode*temp=head; while(temp) { len++; temp=temp->next; } k%=len; if(k==0) returnhead; 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; returnnewStart; } };
以上就是C语言数据结构旋转链表的实现,如有疑问请留言或者到本站社区交流讨论,本站关于数据结构的文章还有很多,希望大家搜索查阅,大家共同进步!