永发信息网

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

答案:2  悬赏:80  手机版
解决时间 2021-07-19 04:16
  • 提问者网友:伴风望海
  • 2021-07-18 23:41
一个单链表 尾节点并不指向头结点 而是直接指向链表中间的一个节点 怎样求出它的循环部分第一个节点?
最佳答案
  • 五星知识达人网友:低血压的长颈鹿
  • 2021-07-19 01:18

有以下几种方法:


1。如果允许修改节点的数据结构的话,那么就在每个节点上设置一个标志位表示是否被访问过。这样遍历时遇到已访问节点即是循环的第一个节点。


2。如果不允许修改节点,那么就在外部用一个hashmap记录下所有的已访问节点。遍历时先查找这个hashmap,节点不存在则加入,已存在则该节点就是循环的第一个节点。


全部回答
  • 1楼网友:神的生死簿
  • 2021-07-19 02:29
没有办法的,除非你知道单链表表头的地址,通常来说会有一个表头和一个空节点,除非你知道那个地址,那么你可以知道第一个节点的地址,否则是没办法知道的,它就是一个单方向的(表头->null->first-node->second-node->...->end-node->mid-node->...),不可逆的过程,除非你在链表里面加上PRE指针,但是那就是双向链表了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯