题解 | #牛牛的链表交换#

牛牛的链表交换

https://www.nowcoder.com/practice/0e009fba6f3d47f0b5026b5f8b0cb1bc

#include <stdio.h>
#include <stdlib.h>

typedef struct Num {
    int a;
    struct Num* pNext;
} Num, * pNum;


void Link_Creat(pNum* p_head, pNum p_new) {
    pNum p_mov;
    p_mov = *p_head;
    if (*p_head == NULL) {
        *p_head = p_new;
        p_new->pNext = NULL;
    } else {
        while (p_mov->pNext != NULL) {
            p_mov = p_mov->pNext;
        }
        p_mov->pNext = p_new;
        p_new->pNext = NULL;
    }

}

void Link_Print(pNum p_head) {
    pNum p_mov = p_head;
    do {
        printf("%d ", p_mov->a);
        p_mov = p_mov->pNext;
    } while (p_mov->pNext != NULL);
    printf("%d", p_mov->a);
}

pNum Link_change(pNum p_head) {
    pNum dummyhead = (pNum)malloc(sizeof(Num));
    dummyhead->pNext = p_head;
    pNum pCurrent = dummyhead;
    pNum ptemp = pCurrent->pNext;
    pNum Ptemp2 = pCurrent->pNext->pNext->pNext;
    pCurrent->pNext = pCurrent->pNext->pNext;
    pCurrent->pNext->pNext = ptemp;
    ptemp->pNext = Ptemp2;
    while (pCurrent->pNext->pNext->pNext != NULL)
    {
        pCurrent = pCurrent->pNext;
    }
    ptemp = pCurrent->pNext;
    Ptemp2 = pCurrent->pNext->pNext->pNext;
    pCurrent->pNext = pCurrent->pNext->pNext;
    pCurrent->pNext->pNext = ptemp;
    ptemp->pNext = Ptemp2;
    return dummyhead->pNext;
}

int main(void) {
    pNum pt_head = NULL;
    pNum pt_new = NULL;
    pNum pt_now = NULL;
    int num = 0;
    int i;
    scanf("%d", &num);
    for (i = 0; i < num; i++) {
        pt_new = (pNum)malloc(sizeof(Num));
        scanf("%d", &pt_new->a);
        Link_Creat(&pt_head, pt_new);
    }
    pt_head = Link_change(pt_head);
    Link_Print(pt_head);
}

全部评论

相关推荐

牛客33727151号:不是哥们我以为驾照是段子呢
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务