#include <stdio.h> #include<malloc.h> struct Node { int val; struct Node* next; }; //创建 struct Node* createNode(int val) { struct Node* p = NULL; p = (struct Node*)malloc(sizeof(struct Node)); if (p == NULL) { printf("创建失败!\n"); return NULL; } p->val = val; //f赋值 p->next = NULL; return p; } //插入 void insertNode(struct Node* q, int val) { struct Node* p; p = (struct Node*)malloc(sizeof(struct Node)); if (p == NULL) { printf("创建失败!\n"); return ; } p->val = val; p->next = q->next; q->next = p; } void changeNode(struct Node* head,int n) { struct Node *l = head; for(int i = 1;i<n;i++) { if(i == 1||i == n-1) { int temp = head->val; head->val = head->next->val; head->next->val = temp; } head=head->next; } head = l; } //打印 void printfNode(struct Node* p) { struct Node* head =p; while(head->next!=NULL) { printf("%d ",head->val); head=head->next; } } int main() { int n, i; scanf("%d", &n); int* arr = (int*)malloc(sizeof(int) * n); struct Node* head = createNode(0); //创建链表 struct Node* p = head; for (i = 0; i < n; i++) scanf("%d", &arr[i]); head->val = arr[0]; for (i = 1; i <= n; i++) { insertNode(p, arr[i]); p = p->next; } changeNode(head,n); printfNode(head); free(p); return 0; }
写的眼睛都花了