怎么样查找出链表的循环部分的第一个节点?

2024-11-26 01:29:45
推荐回答(2个)
回答1:

有以下几种方法:1。如果允许修改节点的数据结构的话,那么就在每个节点上设置一个标志位表示是否被访问过。这样遍历时遇到已访问节点即是循环的第一个节点。2。如果不允许修改节点,那么就在外部用一个hashmap记录下所有的已访问节点。遍历时先查找这个hashmap,节点不存在则加入,已存在则该节点就是循环的第一个节点。

回答2:

没有办法的,除非你知道单链表表头的地址,通常来说会有一个表头和一个空节点,除非你知道那个地址,那么你可以知道第一个节点的地址,否则是没办法知道的,它就是一个单方向的(表头->null->first-node->second-node->...->end-node->mid-node->...),不可逆的过程,除非你在链表里面加上PRE指针,但是那就是双向链表了