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语言数据结构旋转链表的实现,如有疑问请留言或者到本站社区交流讨论,本站关于数据结构的文章还有很多,希望大家搜索查阅,大家共同进步!