我有一个问题:如何在只遍历一次单链表的情况下找到中间节点,而且我们不知道链表中节点的数量?
我有一个答案:使用向量并在遍历链表时将所有节点的地址推入向量,并增加计数器直到到达列表的末尾。因此,最后我们可以得到列表中的节点数,如果是偶数则(counter/2),如果是奇数则(counter/2 + counter%2)可以得到中间节点编号,然后使用
这个方法可以实现...但是它浪费了大量的内存来存储一个非常大的链表的所有地址!那么我们该如何得到更好的解决方案呢?
我有一个答案:使用向量并在遍历链表时将所有节点的地址推入向量,并增加计数器直到到达列表的末尾。因此,最后我们可以得到列表中的节点数,如果是偶数则(counter/2),如果是奇数则(counter/2 + counter%2)可以得到中间节点编号,然后使用
vectore.at(middlenodenumber)
指向中间节点。这个方法可以实现...但是它浪费了大量的内存来存储一个非常大的链表的所有地址!那么我们该如何得到更好的解决方案呢?