把一个长度为 n 的数组转换成链表并把链表前两个节点交换位置和把链表最后两个节点交换位置。
输入描述:
第一行输入一个正整数 n 表示数组的长度
第二行输入 n 个正整数,表示数组中各个元素的值
输出描述:
把数组转换成链表后输出交换位置后的链表
输入:
4
2 3 4 5
输出:
3 2 5 4
#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode
{
int data;
struct ListNode* next;
}ListNode;
ListNode * creat_list(int arr[],int n)
{
ListNode *head=(ListNode*)malloc(sizeof(ListNode));
head->data=arr[0];
head->next=NULL;
ListNode *p=head;
for (int i=1;i<n;i++) {
ListNode *s=(ListNode*)malloc(sizeof(ListNode));
s->data=arr[i];
s->next=NULL;
p->next=s;
p=p->next;
}
return head;
}
void show_list(ListNode *head)
{
ListNode *p=head;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
void Swap(int*a,int*b)
{
int tmp=*a;
*a=*b;
*b=tmp;
}
int main() {
int n;
scanf("%d",&n);
int arr[n];
for(int i=0;i<n;i++)
{
scanf("%d ",&arr[i]);
}
ListNode *head=creat_list(arr,n);
ListNode *pre=head,*p=head->next;
Swap(&pre->data,&p->data);
while(p->next!=NULL)
{
pre=p;
p=p->next;
}
Swap(&pre->data,&p->data);
show_list(head);
return 0;
}
标签:head,ListNode,int,交换,next,链表,数据结构,data
From: https://blog.csdn.net/agwstp21/article/details/136942526