Advertisement
Guest User

RingList-AlgoDat-Verbessert

a guest
May 1st, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.66 KB | None | 0 0
  1. package blatt3;
  2.  
  3. import java.lang.Iterable;
  4. import java.util.Iterator;
  5.  
  6. public class RingList<E> implements List<E> {
  7.     private class Wrapper {
  8.         E e;
  9.         Wrapper succ;
  10.        
  11.         Wrapper(E e){
  12.             this.e = e;
  13.             succ = null;
  14.         }
  15.     }
  16.    
  17.     Wrapper first;
  18.     Wrapper last;
  19.     int size;
  20.    
  21.     RingList(){
  22.         first = new Wrapper(null);
  23.         last = first;
  24.         last.succ = first;
  25.         size = 0;
  26.     }
  27.  
  28.     public boolean add(E e) {
  29.         Wrapper w = new Wrapper(e);
  30.         last.succ = w;
  31.         last = w;
  32.         last.succ = first;
  33.         size++;
  34.         return true;
  35.     }
  36.    
  37.     public boolean remove(Object o) {
  38.         Wrapper temp = first;
  39.         Wrapper w = first.succ;
  40.         for(int i = 0; i<size; i++) {
  41.             if(o.equals(w.e)) {
  42.                 temp.succ = w.succ;
  43.                 if(i == size -1) {
  44.                     last = temp.succ;
  45.                 }
  46.                 size--;
  47.                 return true;
  48.             }
  49.             temp = w;
  50.             w = temp.succ;
  51.         }
  52.         return false;
  53.     }
  54.    
  55.     public E remove(int index) {
  56.         if(index >= size || index < 0) {
  57.             throw new IndexOutOfBoundsException();
  58.         }
  59.         Wrapper temp = first;
  60.         Wrapper w = first.succ;
  61.         for(int i = 0; i<index; i++) {
  62.             temp = w;
  63.             w = temp.succ;
  64.         }
  65.         temp.succ = w.succ;
  66.         if(index == size -1) {
  67.             last = temp;
  68.         }
  69.         size--;
  70.         return w.e;
  71.     }
  72.    
  73.     public int indexOf(Object o) {
  74.         Wrapper temp = first;
  75.         Wrapper w = first.succ;
  76.         for(int i = 0; i<size; i++) {
  77.             if(o.equals(w.e)) {
  78.                 return i;
  79.             }
  80.             temp = w;
  81.             w = temp.succ;
  82.         }
  83.         return -1;
  84.     }
  85.    
  86.     public E get(int index) {
  87.         Wrapper wRun;
  88.         if (index < 0 || index >= size){
  89.             throw new IndexOutOfBoundsException();
  90.         }
  91.         wRun = this.first.succ;
  92.         for (int iRun = 0; iRun < index; iRun++){
  93.             wRun = wRun.succ;
  94.         }
  95.         return wRun.e;
  96.     }
  97.  
  98.     public int size() {
  99.         return size;
  100.     }
  101.  
  102.     public Iterator<E> iterator() {
  103.         return new Iterator<E>(){
  104.             Wrapper next = first.succ;
  105.             Wrapper current;
  106.  
  107.             public boolean hasNext() {
  108.                 return next.e != null;
  109.             }
  110.  
  111.             public E next() {
  112.                 current = next;
  113.                 if (next != null){
  114.                     next = next.succ;
  115.                 }
  116.                 return current.e;
  117.             }
  118.  
  119.             public void remove() {
  120.                 throw new UnsupportedOperationException(); 
  121.             }
  122.         };
  123.     }
  124. }
  125.  
  126.  
  127. // MAIN KLASSE:
  128.  
  129. package blatt3;
  130.  
  131. import java.awt.Point;
  132. import java.util.Iterator;
  133.  
  134. public class Main {
  135.  
  136.     public static void main(String[] args) {
  137.         int n = 5;
  138.         if (args.length > 0){
  139.             n = Integer.parseInt(args[0]);
  140.         }
  141.        
  142.         List<Integer> aList = new RingList<Integer>();
  143.        
  144.         for (int i = 0; i < n; i++){
  145.             aList.add(i*i);
  146.         }
  147.         Integer num1 = new Integer(0);
  148.         Integer num2 = new Integer(9);
  149.         Integer num3 = new Integer(10);
  150. //      System.out.println("Index of " + num1 + ": " + aList.indexOf(num1));
  151. //      System.out.println("Index of " + num2 + ": " + aList.indexOf(num2));
  152. //      System.out.println("Index of " + num3 + ": " + aList.indexOf(num3));
  153. //      System.out.println("Remove " + num1 + ": " + aList.remove(num1));
  154. //      System.out.println("Remove " + num2 + ": " + aList.remove(num2));
  155.         System.out.println("Remove " + num3 + ": " + aList.remove(aList.size() -1));
  156.         aList.add(99);
  157.        
  158.         /* Ausgabeschleife 1 fuer Integer-Liste aList */
  159.         for (int i = 0; i < aList.size(); i++){
  160.             System.out.println(aList.get(i));
  161.         }
  162. //      System.out.println("=======================");
  163.        
  164. //      for (int val: aList){
  165. //          System.out.println(val);
  166. //      }
  167. //      System.out.println("=======================");
  168. //     
  169. //      List<String> bList = new RingList<String>();
  170. //     
  171. //      for (int i = 0; i < n; i++){
  172. //          bList.add("als String " + i * i);
  173. //      }
  174. //      /* Ausgabeschleife 2 fuer String-Liste bList */
  175. //      for (Iterator it = (Iterator) bList.iterator(); it.hasNext();){
  176. //          System.out.println(it.next());
  177. //      }
  178. //      System.out.println("=======================");
  179.     }
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement