【问题描述】输入若干个正整数,创建链表。遍历链表,找到链表中的最大整数,将最大的数值与表尾的数值对换。
【输入形式】输入若干个正整数,负数或 0 代表输入结束(不考虑空表,至少有一个有效数据)。
【输出形式】输出对换后的整数序列。
【样例输入】10 25 6 15 -7
【样例输出】10 15 6 25
【样例输入】520 7719 729 51 8579 3551 0
【样例输出】520 7719 729 51 3551 8579
求这个问题的完整代码。
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
CSDN专家-link 2022-11-21 11:18关注定义链表结构,创建链表。遍历链表找到最大值所在节点,以及尾节点,进行数据交换

#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; }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录