题解 | #牛牛的链表交换#
牛牛的链表交换
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);
}
海康威视公司福利 1382人发布
查看11道真题和解析

