C++ 在链表c+中,从开始处交换第k个节点,从结束处交换第k个节点+;
如果我得到的链表输入是:1->2->3->4,K=1,num=2 给定问题的期望输出为4->3->2->1 数据交换是不允许的,我被赋予头指针、K值和num作为函数的参数 尽管已经检查了所有的角点情况(num>K,K==1,K==num,Knum),但我还是得到了分段错误) 回流头; 如果(num==(2*K-1)) 回流头; currnode1=头部; int i=1; while(currnode1!=NULL&&inxt; i++; } i=1; currnode2=头部; while(currnode2!=NULL&&inxt; i++; } 如果(currnode1&&currnode1->next==currnode2) flag=1; if(currnode1和currnode2) { 温度=电流节点1->下一步; currnode1->next=currnode2->next; currnode2->next=温度; } if(prevnode1==NULL) { 头=电流节点2; prevnode2->next=currnode1; } if(prevnode2==NULL) { 头=电流节点1; prevnode1->next=currnode2; } 如果(标志==1) { currnode1->next->next=currnode2; } if(prevnode1!=NULL&&prevnode2!=NULL) { prevnode2->next=currnode1; prevnode1->next=currnode2; } 回流头; //你的代码在这里 }C++ 在链表c+中,从开始处交换第k个节点,从结束处交换第k个节点+;,c++,linked-list,C++,Linked List,如果我得到的链表输入是:1->2->3->4,K=1,num=2 给定问题的期望输出为4->3->2->1 数据交换是不允许的,我被赋予头指针、K值和num作为函数的参数 尽管已经检查了所有的角点情况(num>K,K==1,K==num,Knum),但我还是得到了分段错误) 回流头; 如果(num==(2*K-1)) 回流头; currnode1=头部; int i=1; while(currnode1!=NULL&&inxt; i++; } i=1; currnode2=头部; while(c
Node *swapkthnode(Node* head, int num, int K)
{
int flag=0;
Node *prevnode1=head,*currnode1,*currnode2,*temp=NULL,*prevnode2=NULL;
if(K>num)
return head;
if(num==(2*K-1))
return head;
currnode1=head;
int i=1;
while(currnode1!=NULL&&i<K)
{
prevnode1=currnode1;
currnode1=currnode1->next;
i++;
}
i=1;
currnode2=head;
while(currnode2!=NULL&&i<num-K)
{
prevnode2=currnode2;
currnode2=currnode2->next;
i++;
}
if(currnode1&&currnode1->next==currnode2)
flag=1;
if(currnode1&&currnode2)
{
temp=currnode1->next;
currnode1->next=currnode2->next;
currnode2->next=temp;
}
if(prevnode1==NULL)
{
head=currnode2;
prevnode2->next=currnode1;
}
if(prevnode2==NULL)
{
head=currnode1;
prevnode1->next=currnode2;
}
if(flag==1)
{
currnode1->next->next=currnode2;
}
if(prevnode1!=NULL&&prevnode2!=NULL)
{
prevnode2->next=currnode1;
prevnode1->next=currnode2;
}
return head;
// Your Code here
}