ZBLOG

for(index = 0; index < num + 1; index++) { Node *current = *head; for(point = 0; point < num - index; point++) { if(current->type > current->next->type) { swap(current, current->ne...

根据您提供的代码,有一处逻辑错误。在内层循环中,您正在比较当前节点和下一个节点的类型,并交换它们,但是您忽略了对链表头指针的更新。这可能导致排序过程不正确。

以下是修复后的代码:

for(index = 0; index < num + 1; index++) {
    Node *current = *head;
    for(point = 0; point < num - index; point++) {
        if(current->type > current->next->type) {
           swap(current, current->next); 
           // 更新头指针(如果需要)
           if (*head == current) {
               *head = current->next;
           }
        }
        current = current->next;   
    }

    Node *tmp = *head;
    printf("第%d次排队: ", num + 1);
    for(j = 0; j < num + 1; j++) {
        printf("%d ", tmp->id);
        print_type(tmp->type);
        tmp = tmp->next;
    }
    printf("\n");
    
    num++;
    if(num == 10) {
        break;
    }
}

请注意,在交换节点时,还需要考虑更新链表头指针(如果当前交换影响到了链表头部)。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=9372

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?