由于列表中间有循环,单链表的丢失部分会发生什么?

问题描述 投票:0回答:1

我不想通过显示整个代码来浪费您的时间。

目前我已经创建了一个单链表,这就是显示它后的样子。

19-->85-->50-->20-->33-->9-->1-->7-->空。

所以我创建了一个方法,可以将节点添加到列表的任何位置。

public  void add_node_any(int value , int position){
        
        listNode node = new listNode(value);
        
        if(position == 1){
        
            node.next = head;
            head = node;
        
        }
        else {
            
        listNode current = head ;
        int count = 1;
        while(count < position){
        
            current = current.next;
            count++;
        
        }
         previous.next = node;
        node.next = previous.next;
        
        
        }
 
        }

我试图将节点添加到第三个位置。

single.add_node_any(2, 3);

我知道,

 previous.next = node;
 node.next = previous.next;

部分正在创建一个循环。我还知道,由于这个循环,我无法访问 50 个节点等。 所以我的问题是这些节点发生了什么?我看到一些声明说这些节点仍然是列表的一部分。它只是无法访问。

如果这仍然是一部分,那是怎么发生的?我的意思是,虽然重复节点 (2) 和 50(循环旁边)之间没有连接,但如何保持与列表的连接?

非常感谢您的宝贵回答。

如果您觉得我对这个问题的理论方面太过调情,我很抱歉。

但我也很欣赏你的衍生答案。

祝大家有美好的一天。

java list algorithm data-structures singly-linked-list
1个回答
0
投票

这些节点不再是列表的一部分。由于内存没有通过

delete
释放,所以这是内存泄漏。

© www.soinside.com 2019 - 2024. All rights reserved.