循环列表添加和删除方法

时间:2014-10-16 17:05:36

标签: java linked-list circular-list

如何从正常链接到循环链接列表获取我的添加和删除方法。使用这段代码,我认为我需要一个尾部引用等等?

 public void add(int index, Object item)
                  throws ListIndexOutOfBoundsException {


     //our index needs to go in along with our stuff in item
        Node temp = new Node(item);
        Node current = head;

        for(int i = 1; i < index && current.getNext() != null; i++)
        {
            current = current.getNext();
        }
        // set the new node's next-node reference to this node's next-node reference
        temp.setNext(current.getNext());
        // now set this node's next-node reference to the new node
        current.setNext(temp);
    //  current.setPrevious();
        numItems++;// increment the number of elements variable

  }  

  public boolean remove(int index) 
                   throws ListIndexOutOfBoundsException {

      if(index < 1 || index > size())
            return false;

        Node current = head;
        for(int i = 1; i < index; i++)
        {
            if(current.getNext() == null)
                return false;

            current = current.getNext();
        }
        current.setNext(current.getNext().getNext());
        numItems--; // decrement the number of elements variable
        return true;


  }   // end remove

1 个答案:

答案 0 :(得分:0)

在循环链接列表中,current.getNext()不会是null。您必须以另一种方式检查列表末尾的时间(current.getNext() == null始终为false)。

第一个选项是与头节点进行比较,即如果current.getNext() == head,则current是列表中的最后一个元素,您可以停止。

但是既然你还在计算索引,你也可以确保索引始终在0到size()之间(无论如何你当前都在你的删除方法中)。