Mega Code Archive

 
Categories / Java / Collections Data Structure
 

Single linked list

/**  * Copyright (c) 2005 Elie Levy <elie.levy@zilonis.org>  * All rights reserved  *   * This License governs use of the accompanying Software, and your use of the  * Software constitutes acceptance of this license.  *   * You may use this Software for any non-commercial purpose, subject to the  * restrictions in this license. Some purposes which can be non-commercial are  * teaching, academic research, and personal experimentation. You may also  * distribute this Software with books or other teaching materials, or publish  * the Software on websites, that are intended to teach the use of the   * Software.  *   *   * You may not use or distribute this Software or any derivative works in any  * form for commercial purposes. Examples of commercial purposes would be  * running business operations, licensing, leasing, or selling the Software, or  * distributing the Software for use with commercial products.  *   * You may modify this Software and distribute the modified Software for  * non-commercial purposes, however, you may not grant rights to the Software   * or derivative works that are broader than those provided by this License.   * For example, you may not distribute modifications of the Software under  * terms that would permit commercial use, or under terms that purport to   * require the Software or derivative works to be sublicensed to others.  *   * You may use any information in intangible form that you remember after  * accessing the Software. However, this right does not grant you a license to  * any of the copyrights or patents for anything you might create using such  * information.  *   * In return, we simply require that you agree:  *   * Not to remove any copyright or other notices from the Software.  *   *   * That if you distribute the Software in source or object form, you will  * include a verbatim copy of this license.  *   *   * That if you distribute derivative works of the Software in source code form  * you do so only under a license that includes all of the provisions of this  * License, and if you distribute derivative works of the Software solely in  * object form you do so only under a license that complies with this License.  *   *   * That if you have modified the Software or created derivative works, and  * distribute such modifications or derivative works, you will cause the  * modified files to carry prominent notices so that recipients know that they  * are not receiving the original Software. Such notices must state: (i) that  * you have changed the Software; and (ii) the date of any changes.  *   *   * THAT THE SOFTWARE COMES "AS IS", WITH NO WARRANTIES. THIS MEANS NO EXPRESS,  * IMPLIED OR STATUTORY WARRANTY, INCLUDING WITHOUT LIMITATION, WARRANTIES OF  * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR ANY WARRANTY OF TITLE  * OR NON-INFRINGEMENT. ALSO, YOU MUST PASS THIS DISCLAIMER ON WHENEVER YOU  * DISTRIBUTE THE SOFTWARE OR DERIVATIVE WORKS.  *   *   * THAT NEITHER ZILONIS NOR THE AUTHOR WILL BE LIABLE FOR ANY DAMAGES RELATED  * TO THE SOFTWARE OR THIS LICENSE, INCLUDING DIRECT, INDIRECT, SPECIAL,  * CONSEQUENTIAL OR INCIDENTAL DAMAGES, TO THE MAXIMUM EXTENT THE LAW PERMITS,  * NO MATTER WHAT LEGAL THEORY IT IS BASED ON. ALSO, YOU MUST PASS THIS  * LIMITATION OF LIABILITY ON WHENEVER YOU DISTRIBUTE THE SOFTWARE OR   * DERIVATIVE WORKS.  *   *   * That if you sue anyone over patents that you think may apply to the Software  * or anyone's use of the Software, your license to the Software ends  * automatically.  *   *   * That your rights under the License end automatically if you breach it in any  * way.  *   *   * Elie Levy reserves all rights not expressly granted to you in this   * license.  *    */ import java.util.Iterator; /**  * A very lite single linked list  */ public class LiteList<Element> implements Iterable<Element> {          private Node first;     public void add(Element element) {   first = new Node(element,first);     }     public Iterator<Element> iterator() {   return new LiteIterator();     }     private class LiteIterator implements Iterator<Element> {   Node current;   public LiteIterator() {       current = first;   }      public boolean hasNext() {       return (current!=null);   }   public Element next() {       Element result = current.getElement();       current = current.getNext();       return result;   }   public void remove() {   }     }     private class Node {   private Element element;   private Node next;      public Node(Element element, Node next) {       this.element = element;       this.next = next;   }   public Element getElement() {       return element;   }   public Node getNext() {       return next;   }     }  }