题解 | #牛牛的链表交换#
牛牛的链表交换
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); }