m0_72280754 2022-11-21 11:14 采纳率: 90.2%
浏览 4
已结题

求这个问题的完整代码。

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

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2022-11-21 11:18
    关注

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

    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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月29日
  • 已采纳回答 11月21日
  • 创建了问题 11月21日