题解 | #牛牛的链表交换#
牛牛的链表交换
https://www.nowcoder.com/practice/0e009fba6f3d47f0b5026b5f8b0cb1bc
#include <stdio.h> #include <stdlib.h> typedef struct ListNode { int data; struct ListNode* next; }ListNode; ListNode* creat_list(int *arr,int n) { ListNode *La = (ListNode *)malloc(sizeof(ListNode)); La -> data = arr[0]; La -> next = NULL; ListNode *r = La; for(int i = 1;i<n;i++) { ListNode *s = (ListNode*)malloc(sizeof(ListNode)); s -> data = arr[i]; s -> next = NULL; r -> next = s; r = s; } return La; } void Swap(int *a,int *b) { int tmp; tmp = *a; *a = *b; *b = tmp; } void SwapNode(ListNode *La) { ListNode *pa = La, *pb = La -> next; Swap(&pa->data,&pb->data); while(pb -> next != NULL) { pa = pb; pb = pb -> next; } Swap(&pa->data,&pb->data); } void Printlist(ListNode *La) { ListNode *pa = La; while(pa) { printf("%d ",pa -> data); pa = pa -> next; } } int main() { int n = 0; scanf("%d",&n); int arr[n]; for(int i=0; i<n; i++) { scanf("%d",&arr[i]); } ListNode* La = creat_list(arr,n); SwapNode(La); Printlist(La); return 0; }
主要就是链表的基本定义,构造,添加元素,输出。