求这个问题的完整代码。

【问题描述】输入若干个正整数,创建链表。遍历链表,找到链表中的最大整数,将最大的数值与表尾的数值对换。
【输入形式】输入若干个正整数,负数或 0 代表输入结束(不考虑空表,至少有一个有效数据)。
【输出形式】输出对换后的整数序列。
【样例输入】10 25 6 15 -7
【样例输出】10 15 6 25
【样例输入】520 7719 729 51 8579 3551 0
【样例输出】520 7719 729 51 3551 8579

定义链表结构,创建链表。遍历链表找到最大值所在节点,以及尾节点,进行数据交换

img

#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;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632