循环链接列表节点插入Java

时间:2015-04-27 02:03:00

标签: java linked-list

我尝试为圆形链表实现插入方法。我想我取得了一些成功。

问题: 当我显示列表时。显示方法将循环,因为链接的每个下一个变量都链接到非空节点对象。所以head永远不会是一个空对象。根据我记得的单链表,head始终指向列表中的第一个节点或第一个包含数据的节点。

我对循环链表的概念性理解: 根据我的理解,循环链接有点像单链表,但有一点点扭曲:尾部对象的下一个变量指向头部。

我编码它就像源链接提供的图表一样。

来源:http://sourcecodemania.com/circular-linked-lists/

{ 'john smith' => 'jsmith@gmail.com', 'joe@gmail.com => 'joe@gmail.com' }

2 个答案:

答案 0 :(得分:1)

一旦插入至少一个元素,就永远不会遇到null。它将一直持续到无限。

另外,修改head只是为了显示列表可能不是一个好主意。像显示器这样的操作不应该有任何副作用。

相反,在列表类中保留成员字段大小,并在每个插入和删除方法中更新它。

现在您将知道应该多少次迭代循环。

ListClassName current = head;    // Head is not modified.
for (int i = 0; i < this.size; i++) {
//   System.out.println (current.data);
     current = current.next;
}
祝你好运。

答案 1 :(得分:1)

您可以保留对第一个Link对象的引用,并在循环时检查以确保head与该对象不相等:

 public void display()
{
    boolean first=true;
    Link firstItem=null;
    // good implementation for display #2
    while(head != null && head!= firstItem)
    {
       if(first){
           firstItem=head;
           first=false;
        }
    //  System.out.println (head.data);
        head = head.next;
    }
}