LinkedList

来源:互联网 发布:圣马可吉他怎么样知乎 编辑:程序博客网 时间:2024/05/17 21:54

LinkedList 

easy to expend, such as insert or delete

each element is a separate object : Node

disadvantage: need more memory to store reference to next node( extra 4 bytes on 32-bit CPU)

Two type: 

1 singly linked list



2 double linked list


ps : circular linked list : last node points back to first node( head)


Clone:  If we simply use the clone() method from the Object class, we will get the following structure called a "shallow" copy:


linkedlist 实现 可以参照此处代码

其中内部类实现iterator,比较有意思!

注意iterator通常需要实现三个函数

  • AnyType next() - returns the next element in the container
  • boolean hasNext() - checks if there is a next element
  • void remove() - (optional operation).removes the element returned by next()

 /******************************************************* *  The Iterator class ********************************************************/   public Iterator<AnyType> iterator()   {      return new LinkedListIterator();   }   private class LinkedListIterator  implements Iterator<AnyType>   {      private Node<AnyType> nextNode;      public LinkedListIterator()      {         nextNode = head;      }      public boolean hasNext()      {         return nextNode != null;      }      public AnyType next()      {         if (!hasNext()) throw new NoSuchElementException();         AnyType res = nextNode.data;         nextNode = nextNode.next;         return res;      }      public void remove() { throw new UnsupportedOperationException(); }   }


0 0
原创粉丝点击