循环列表添加和删除方法



如何将我的add和remove方法从普通链接列表转换为循环链接列表。使用这个代码,我想我需要一个尾部引用,等等?

 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

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

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

但是,由于您无论如何都在计算索引,您也可以确保索引始终在0和size()之间(您目前在remove方法中也这样做)。

相关内容

  • 没有找到相关文章