#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;
}
写的眼睛都花了

京公网安备 11010502036488号