【问题描述】输入若干个正整数,创建链表。遍历链表,找到链表中的最大整数,将最大的数值与表尾的数值对换。
【输入形式】输入若干个正整数,负数或 0 代表输入结束(不考虑空表,至少有一个有效数据)。
【输出形式】输出对换后的整数序列。
【样例输入】10 25 6 15 -7
【样例输出】10 15 6 25
【样例输入】520 7719 729 51 8579 3551 0
【样例输出】520 7719 729 51 3551 8579
定义链表结构,创建链表。遍历链表找到最大值所在节点,以及尾节点,进行数据交换
#include <stdio.h>
typedef struct _node
{
int data;
struct _node *next;
}node;
void createlist(node *head)
{
node *p = head;
int n;
scanf("%d",&n);
while(n > 0)
{
node *q = (node*)malloc(sizeof(node));
q->data = n;
q->next = NULL;
p->next = q;
p = q;
scanf("%d",&n);
}
}
void changenode(node *head)
{
node *p = head->next;
int max = p->data;
node *q = head->next;
while(p->next != NULL)
{
if(p->next->data > max)
{
max = p->next->data;
q = p->next;
}
p = p->next;
}
q->data = p->data;
p->data = max;
}
void printnode(node *head)
{
node *p = head->next;
while(p != NULL)
{
printf("%d ",p->data);
p = p->next;
}
}
int main()
{
node head;
head.next = NULL;
createlist(&head);
changenode(&head);
printnode(&head);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!