#include <stdio.h>
#include <stdlib.h>
typedef struct Link{
int data;
struct Link *next;
}Node;
void put(Node *p);
int pai(Node *max, Node *head);
int *findmax(Node *head);
int *intput(int n)
{
Node *head = NULL;
Node *p = (Node*)malloc(sizeof(Node));
head = p;
int i = 0, g;
int arr[1000];
while(i < 100)
{
scanf("%d", &arr[i]);
char ch = getchar();
Node *a = (Node*)malloc(sizeof(Node));
a -> data = arr[i];
a -> next = NULL;
head ->next = a;
head = head ->next;
i++;
if (ch != ' ')
break;
}
return p;
}
void put(Node *p)
{
Node *a = p;
while (a ->next != NULL)
{
a = a ->next;
printf("%d ", a->data);
}
}
int *findmax(Node *head)
{
Node *p = head;
Node *max = (Node*)malloc(sizeof(Node));
max->data = 0;
max->next = NULL;
int i = 0;
while(p ->next!= NULL)
{
p = p ->next;
if(max->data < p->data)
{
max = p;
}
}
return max;
}
int pai(Node *max, Node *head)
{
Node *p = (Node*)malloc(sizeof(Node));
p = head;
while(head->next != NULL)
{
if(head->next->data == max ->data)
{
head ->next = head->next->next;
}
head = head ->next;
}
head ->next = max;
head->next->data = max ->data;
head->next->next = NULL;
return p;
}
int main()
{
int n ;
Node *pr = intput(5);
int a = findmax(pr);
Node *s = pai(a , pr);
put(s);
return 0;
}
【输入形式】 输入为一个整数序列,整数之间以空格隔开,序列以回车结尾。 【输出形式】 输出为移动后的整数序列,整数之间以空格隔开,序列以回车结尾。
【样例输入】 3 12 4 9 5 1
【样例输出】 3 4 9 5 1 12