【链表】交换两个结点的值

struct ListNode* swapNodes(struct ListNode* head, int k){
    struct ListNode *tar1,*tar2;//目标结点
    int num=0;
    struct ListNode *fast;
    fast=head;
    tar2=head;
    while(--k)
    {
        fast=fast->next;
    }
    tar1=fast;//此时tar1为第k个结点
    while(fast->next)
    {
        fast=fast->next;
        tar2=tar2->next;//此时tar2为倒数第k个结点
    }
    num=tar1->val;
    tar1->val = tar2->val;
    tar2->val = num;

return head;

}