Advertisement
Sylv3rWolf

poprawione

Oct 27th, 2015
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.63 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package aiz.list;
  7.  
  8. /**
  9.  *
  10.  * @author MaxSylverWolf
  11.  */
  12. public class ListOne<T> implements IList<T> {
  13.    
  14.     ElemOne<T> pierwszy;
  15.     ElemOne<T> ostatni;
  16.     int licznik;
  17.  
  18.     public ListOne() {
  19.         pierwszy = null;
  20.         ostatni = null;
  21.         licznik = 1;
  22.     }
  23.     public void addFirst(T newData) {
  24.        
  25.         ElemOne<T> eo = new ElemOne(newData, null);
  26.         if (pierwszy == null) {
  27.             pierwszy = eo;
  28.             ostatni = eo;
  29.         } else {
  30.             ElemOne<T> tmp = pierwszy;
  31.             pierwszy = eo;
  32.             pierwszy.setNext(tmp);
  33.         }
  34.         licznik++;
  35.     }
  36.  
  37.     @Override
  38.     public void addLast(T newData) {
  39.        
  40.         ElemOne<T> last = new ElemOne(newData, null);
  41.         ElemOne<T> tmp = ostatni;
  42.         ostatni = last;
  43.         tmp.setNext(ostatni);
  44.         licznik ++;
  45.        
  46.     }
  47.  
  48.     @Override
  49.     public void addAtPosition(T newData, int position) throws ListException {
  50.        
  51.         if (position == licznik +1){
  52.             addLast(newData);
  53.             return;        
  54.    
  55.     }
  56.    
  57.         ElemOne<T> ee = new ElemOne(newData,null);
  58.  
  59.         if (position > licznik){
  60.            
  61.         } else {
  62.             ElemOne<T> elementAtPosition = getElementAtPosition(position);
  63.             ElemOne<T> prev = getPrev(pierwszy, elementAtPosition);
  64.             if (prev == null){
  65.                 //dodanie jako pierwszy
  66.                 ElemOne<T> tmp = pierwszy;
  67.                 pierwszy = ee;
  68.                 pierwszy.setNext(tmp);
  69.             } else {
  70.                 prev.setNext(ee);
  71.                 ee.setNext(elementAtPosition);
  72.             }
  73.             licznik ++;
  74.         }
  75.     }
  76.    
  77.  
  78.     @Override
  79.     public int size() {
  80.        
  81.         return licznik;
  82.        
  83.     }
  84.  
  85.     @Override
  86.     public T removeFirst() throws ListException {
  87.  
  88.         if(licznik == 0)System.out.println("Pusta lista");
  89.        
  90.         ElemOne<T> tmp = pierwszy;
  91.         pierwszy = tmp.getNext();
  92.         return tmp.getData();   }
  93.  
  94.     @Override
  95.     public T removeLast() throws ListException {
  96.  
  97.         ElemOne<T> eo = new ElemOne(ostatni);
  98.         ElemOne<T> prev = getPrev(pierwszy, ostatni);
  99.         ostatni = prev;
  100.         ostatni.setNext(null);
  101.         return eo.getData();        
  102.     }
  103.  
  104.     @Override
  105.     public T remove(int position) throws ListException {
  106.        
  107.         ElemOne<T> elementAtPosition = getElementAtPosition(position);
  108.         ElemOne<T> prev = getPrev(pierwszy, elementAtPosition);
  109.         prev.setNext(elementAtPosition.getNext());
  110.         return elementAtPosition.getData();
  111.        
  112.     }
  113.  
  114.     @Override
  115.     public int find(T dataToFind) {
  116.  
  117.         int index = 1;
  118.         ElemOne<T> tmp = pierwszy;
  119.         while(index != licznik){
  120.             if (tmp.getData().equals(dataToFind)){
  121.                 return index;
  122.             } else {
  123.                 tmp = tmp.getNext();
  124.                 index ++;
  125.             }
  126.         }
  127.    
  128.         return -1;        
  129.     }
  130.  
  131.     @Override
  132.     public boolean contains(T data) {
  133.  
  134.         ElemOne<T> tmp = pierwszy;
  135.         int index = 0;
  136.         while(index != licznik){
  137.             if (tmp.getData().equals(data)){
  138.                 return true;
  139.             } else {
  140.                 index ++;
  141.                 tmp = tmp.getNext();
  142.             }
  143.         }
  144.  
  145.         return false;
  146.     }
  147.  
  148.     @Override
  149.     public void print() {
  150.        
  151.         ElemOne<T> tmp = pierwszy;
  152.         int index = 1;
  153.        
  154.         while(tmp!=null){
  155.            
  156.         System.out.println("element [" + index + "] = " + tmp.getData().toString());    
  157.             index ++;
  158.             tmp = tmp.getNext();
  159.                  
  160.     }  }
  161.    
  162.     private ElemOne<T> getPrev(ElemOne<T> iterator, ElemOne<T> tmp) {
  163.         if (iterator.equals(tmp)){
  164.             return null;
  165.         } else{
  166.             if(iterator.getNext() != null){
  167.                 while(!iterator.getNext().equals(tmp)){
  168.                     if(iterator.getNext() != null){
  169.                         iterator = iterator.getNext();
  170.                     }
  171.                 }
  172.             }
  173.             return iterator;
  174.         }
  175.     }
  176.  
  177.     private ElemOne<T> getElementAtPosition(int position) {
  178.        
  179.         int index = 1;
  180.         ElemOne<T> iterator = pierwszy;
  181.         while(index != position){
  182.             iterator = iterator.getNext();
  183.             index ++;
  184.         }
  185.         return iterator;
  186.  
  187.     }    
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement