HongRed 2023-12-27 02:23 采纳率: 28.6%
浏览 20
已结题

内部循环执行了2次,为什么外部循环只执行1次(标签-链表|关键词-冒泡排序)

写链表冒泡排序时出了问题,内部循环执行了2次,为什么外部循环只执行1次

img

img

  • 写回答

4条回答 默认 最新

  • 猫头虎 新星创作者: Python、Go技术领域 2023-12-27 09:27
    关注

    参考一下优化后的代码:

    struct student temp;
    struct node* turn = headnode->next;
    
    // 外部循环遍历链表
    for (; turn != NULL; turn = turn->next) {
        struct node* move = headnode->next;  // 内部循环每次都从头开始
    
        // 内部循环用于比较和交换
        for (; move->next != NULL; move = move->next) {
            if (move->data.average > move->next->data.average) {
                // 交换 move 和 move->next 的数据
                temp = move->data;
                move->data = move->next->data;
                move->next->data = temp;
            }
        }
    }
    
    
    

    问题分析:

    循环条件设置不正确:外部循环应该遍历整个链表,但你的内部循环的起始条件 move=headnode->next 只在第一次外部循环时被设置,后续没有重置。因此,在第一次外部循环结束后,move 指针已经到达链表末尾,导致内部循环在后续迭代中不再执行。

    变量命名错误:你的代码片段中出现了一些拼写错误,如 headnodecsnextngRed 应该是 headnode->next。

    交换逻辑:当你交换节点数据时,你应该使用一个临时变量来保存其中一个节点的数据,然后进行交换。你的代码似乎在这方面是正确的,但是变量名 terg 似乎是一个拼写错误。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 1月5日
  • 已采纳回答 12月28日
  • 创建了问题 12月27日