afenhhr112233 发表于 2023-3-20 20:57:45

单链表

请问为什么按照上面的方式写就可以正常运行而下面就会陷入死循环?
void MoveMin(LinkedList L, int i)
{
        LinkedList A = L->next, prevB = L, B, temp;
        if(i != 1)
        {
                for(int j = 0; j < i-1; j++)
                        prevB = prevB->next;
                B = prevB->next, temp = B->next;
                L->next = B;
                B->next = A;
                prevB->next = temp;
        }
}


void MoveMin(LinkedList L, int i)
{
        LinkedList A = L->next, prevB = L, B, temp;
        if(i != 1)
        {
                for(int j = 0; j < i-1; j++)
                        prevB = prevB->next;
                B = prevB->next, temp = B;
                L->next = B;
                B->next = A;
                prevB->next = temp->next;
        }
}

当初约定 发表于 2023-3-21 11:13:21

根据楼主提供的信息来看,程序需要解决的是移除掉链表中最后一个节点还是节点中值最小的节点?上面的程序我大致还能看得懂,下面的感觉很乱。由于缺少更为详细的信息,我现在看不出错在哪,但是我强烈建议楼主可以在草稿纸上用笔画出操作单链表的过程,并且重新理一理实现movemin函数的流程,这样不仅能够帮助楼主深刻理解单链表的操作,更能让楼主在之后实现对单链表的操作时能够写出更加优雅的实现方式{:10_256:}

afenhhr112233 发表于 2023-3-21 11:46:09

当初约定 发表于 2023-3-21 11:13
根据楼主提供的信息来看,程序需要解决的是移除掉链表中最后一个节点还是节点中值最小的节点?上面的程序我 ...

谢谢你的建议!

当初约定 发表于 2023-3-21 14:56:58

afenhhr112233 发表于 2023-3-21 11:46
谢谢你的建议!

不客气,学无止境,单链表是最简单的一个数据结构之一,学好这个后面的才能够有信心
页: [1]
查看完整版本: 单链表