Advertisement
Guest User

hmmm

a guest
Jan 21st, 2020
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.79 KB | None | 0 0
  1.  
  2. public class List<T> {
  3.     private Node<T> first;
  4.     private int size = 0;
  5.    
  6.     public List() {
  7.     }
  8.    
  9.     public void add(T content) {
  10.         Node<T> node = new Node();
  11.         node.setContent(content);
  12.         node.setIndex(size);
  13.         if (this.isEmpty()) {
  14.             first = node;
  15.             size++;
  16.         }
  17.         else {
  18.             Node<T> help = first;
  19.             while (help.getNext() != null) {
  20.                 help = help.getNext();
  21.             }
  22.             help.setNext(node);
  23.             size++;
  24.         }
  25.     }
  26.    
  27.     public void add(int index, T content) {
  28.         if (index >= 0 && index < size) {
  29.             Node<T> node = new Node();
  30.             node.setContent(content);
  31.            
  32.             Node<T> next = this.getNode(index);
  33.             node.setNext(next);    
  34.             node.setIndex(index);
  35.            
  36.             if (index == 0) {
  37.                 first = node;
  38.             }
  39.        
  40.             if (index > 0) {
  41.                 Node<T> predecessor = this.getNode(index - 1);
  42.                 predecessor.setNext(node);
  43.             }
  44.                
  45.             if (next != null) {
  46.                 Node<T> toChange = next;;
  47.                 while (toChange != null) {
  48.                     toChange.setIndex(toChange.getIndex() + 1);
  49.                     toChange = toChange.getNext();
  50.                 }
  51.             }
  52.             size++;  
  53.         }
  54.     }
  55.  
  56.     public void remove(int index) {
  57.         if (!this.isEmpty()) {
  58.             if (index >= 0 && index < size) {              
  59.                 Node<T> next = this.getNode(index + 1);;
  60.                
  61.                 if (index == 0) {
  62.                     first = first.getNext();
  63.                 }
  64.                
  65.                 if (index > 0) {
  66.                     Node<T> predecessor = this.getNode(index - 1);
  67.                     predecessor.setNext(next);
  68.                 }
  69.  
  70.                 if (next != null) {
  71.                     Node<T> toChange = next;;
  72.                     while (toChange != null) {
  73.                         toChange.setIndex(toChange.getIndex() - 1);
  74.                         toChange = toChange.getNext();
  75.                     }
  76.                 }
  77.                 size--;          
  78.             }
  79.         }
  80.     }
  81.    
  82.     public void remove(T content) {
  83.         if (!this.isEmpty()) {        
  84.             Node<T> next = first.getNext();
  85.            
  86.             if (first.getContent() == content) {
  87.                 first = next;
  88.                 size--;
  89.             }
  90.             else {
  91.                 Node<T> predecessor = first;
  92.                 while (predecessor != null) {
  93.                     Node<T> node = predecessor.getNext();
  94.                     if (node != null && node.getContent() == content) {
  95.                         next = node.getNext();
  96.                         predecessor.setNext(next);
  97.                         size--;
  98.                         break;
  99.                     }
  100.                     predecessor = node;
  101.                 }
  102.             }
  103.  
  104.             if (next != null) {
  105.                 Node<T> toChange = next;
  106.                 while (toChange != null) {
  107.                     toChange.setIndex(toChange.getIndex() - 1);
  108.                     toChange = toChange.getNext();
  109.                 }
  110.             }                    
  111.         }
  112.     }
  113.    
  114.     private Node<T> getNode(int index) {
  115.         if (!this.isEmpty() && index >= 0 && index < size) {
  116.             Node<T> help = first;
  117.             while (help.getIndex() != index) {
  118.                 help = help.getNext();              
  119.             }  
  120.             return help;
  121.         }
  122.         return null;
  123.     }
  124.    
  125.     public T get(int index) {
  126.         if (!this.isEmpty() && index >= 0 && index < size) {
  127.             Node<T> help = first;
  128.             while (help.getIndex() != index) {
  129.                 help = help.getNext();
  130.             }  
  131.             return help.getContent();
  132.         }
  133.         return null;
  134.     }
  135.    
  136.     public boolean isEmpty() {
  137.         return first == null;
  138.     }
  139.    
  140.     public int size() {
  141.         return size;
  142.     }
  143.    
  144.     public class Node<T>
  145.     {
  146.         private T content;
  147.         private int index;
  148.         private Node<T> next;
  149.  
  150.         public Node() {
  151.         }
  152.  
  153.         public T getContent() {
  154.             return content;
  155.         }
  156.    
  157.         public void setContent(T content) {
  158.             this.content = content;
  159.         }
  160.    
  161.         public Node<T> getNext() {
  162.             return next;
  163.         }
  164.    
  165.         public void setNext(Node<T> next) {
  166.             this.next = next;
  167.         }
  168.        
  169.         public int getIndex() {
  170.             return index;
  171.         }
  172.        
  173.         public void setIndex(int index) {
  174.             this.index = index;
  175.         }
  176.     }
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement