C++ 在链表c+中,从开始处交换第k个节点,从结束处交换第k个节点+;

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

如果我得到的链表输入是: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; } 回流头; //你的代码在这里 }
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
}