ydornberg

SimpleList

Oct 24th, 2015
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.11 KB | None | 0 0
  1. import java.lang.reflect.Array;
  2.  
  3. public class SimpleList<T> {
  4.  
  5.     private class Node {
  6.     private T value;
  7.     private Node next;
  8.     public Node(T value) { this(value, null); }//add constructor
  9.     public Node(T value, Node next) {
  10.         this.next = next;
  11.         this.value = value;
  12.     }
  13.     // Accessor methods
  14.     public T getElement() { return value; }
  15.     public Node getNext() { return next; }
  16.     // Modifier methods
  17.     public void setElement(T v) { value = v; }
  18.     public void setNext(Node n) { next = n; }
  19.     }
  20.    
  21.     // MyList class
  22.     private Node head;
  23.     // Implement required methods here
  24.     public SimpleList(SimpleList rhs){
  25.         head = null;
  26.     }
  27.     public SimpleList (T[] tArray, int n){//-----------------------------------MyList char[] int
  28.         for(int i=0; i<n; i++){
  29.             this.pushBack(tArray[i]);
  30.         }
  31.     }
  32.     public boolean remove (int index){//-------------------------------------boolean remove index
  33.         if(this.size()==0){
  34.             System.out.println("No entries to remove.");
  35.             return false;
  36.         }
  37.         else{
  38.             if(index<0 || index>this.size()){
  39.                 System.out.println("Not a valid index number.");
  40.                 return false;
  41.             }
  42.             else{
  43.                 if(index == 0){     //remove object 0
  44.                     Node temp = head;
  45.                     head = head.next;
  46.                     temp.next = null;
  47.                 }
  48.                 else if(index == this.size()){  //remove last object
  49.                     Node temp = getNode(index-1);
  50.                     temp.next = null;
  51.                 }
  52.                 else{       //remove object inside list
  53.                     Node temp1 = getNode(index-1);
  54.                     Node temp2 = getNode(index);
  55.                     Node temp3 = getNode(index+1);
  56.                     temp1.next = temp3;
  57.                     temp2.next = null;
  58.                 }
  59.                 return true;
  60.             }
  61.         }
  62.     }
  63.     public boolean remove (T value){//-------------------------------------boolean remove char
  64.         int index = this.find(value);
  65.         boolean x = remove(index);
  66.         return x;
  67.     }
  68.     public Node previous(Node curr){
  69.         int i=0;
  70.         while(getNode(i)!=curr)
  71.             i++;
  72.         return getNode(i-1);
  73.         }
  74.     public Node next(Node curr){return curr.next;}
  75.     public T getAt(int index){//--------------------------------------------char get index
  76.         Node temp1 = head;
  77.         for(int i=0; i<index; i++){
  78.             if(temp1.next != null)
  79.                 temp1 = temp1.next;
  80.         }
  81.         return temp1.value;
  82.     }
  83.     private Node getNode(int index){//-----------------------------------------Node getNode index
  84.         Node temp1 = head;
  85.         for(int i=0; i<index; i++){
  86.             if(temp1.next != null)
  87.                 temp1 = temp1.next;
  88.         }
  89.         return temp1;
  90.     }
  91.     public void set(int index, T value){//-----------------------------------void set index value
  92.         if(index<0 || index>this.size()){
  93.             System.out.println("Invalid index number.");
  94.         }
  95.         else
  96.             getNode(index).value = value;
  97.     }
  98.     public void swap(int i, int j){//--------------------------------------------void swap int int
  99.         if(this.size()==0)
  100.             System.out.println("No entries to swap.");
  101.         else{
  102.             if((i>=0)&&(i<=this.size())&&(j>=0)&&(j<=this.size())){
  103.                 Node temp1 = getNode(i);
  104.                 Node temp2 = getNode(j);
  105.                 this.remove(j);
  106.                 this.insertAtPos(j, temp1.value);
  107.                 this.remove(i);
  108.                 this.insertAtPos(i, temp2.value);
  109.             }
  110.             else
  111.                 System.out.println("Not a valid index number.");
  112.         }
  113.     }
  114.     public void pushBack(T t){//----------------------------------------void pushBack char
  115.         this.insertAfter(this.size(), t);
  116.     }
  117.     public void insertAtPos(int i, T value){//--------------------------------void insertAtPos int char
  118.         Node temp = new Node(value,null);
  119.         if(this.size()==0){
  120.             head = temp;
  121.         }
  122.         else{
  123.             if((i>this.size())||(i<0)){ //index out of list
  124.                 System.out.println("Not a valid index number.");
  125.             }
  126.             else if(i==this.size()){//insert at end
  127.                 getNode(i).next = temp;
  128.             }
  129.             else if(i==0){      //insert at beginning
  130.                 temp.next = getNode(i);
  131.                 head = temp;
  132.             }
  133.             else{               //insert inside list
  134.                 temp.next = getNode(i);
  135.                 getNode(i-1).next = temp;
  136.             }
  137.         }
  138.     }
  139.     public void insertAfter(int i, T value){//-------------------------------void insertAfter int char
  140.         Node temp = new Node(value,null);
  141.         if(this.size()==0){
  142.             head = temp;
  143.         }
  144.         else{
  145.             if((i>this.size())||(i<0)){ //index out of list
  146.                 System.out.println("Not a valid index number.");
  147.             }
  148.             else if(i==this.size()){//insert at end
  149.                 getNode(i).next = temp;
  150.             }
  151.             else{               //insert inside list
  152.                 temp.next = getNode(i+1);
  153.                 getNode(i).next = temp;
  154.             }
  155.         }
  156.     }
  157.     public SimpleList sublist(int fromIndex, int toIndex){//------------------MyList sublist int int
  158.         SimpleList sublist = new SimpleList(null);
  159.         if((fromIndex>=0)&&(fromIndex<=this.size())&&(toIndex>=0)&&(toIndex<=this.size())){
  160.             for(int i=fromIndex; i<=toIndex; i++){
  161.                 sublist.pushBack(getAt(i));
  162.             }
  163.         }
  164.         else
  165.             System.out.println("Invalid index numbers provided.");
  166.         return sublist;
  167.     }
  168.     public int find(T value){ //--------------------------------------------int find char
  169.         Node temp = head;
  170.         int i =0;
  171.         while((temp.value!=value)&&(i<this.size())){
  172.             i++;
  173.             if(temp.next!=null)
  174.                 temp = temp.next;
  175.             }
  176.         if(temp.value == value)
  177.             return i;
  178.         else{
  179.             System.out.println("Value '"+value+"' not found.");
  180.             return -1;
  181.         }
  182.     }
  183.     public int find(SimpleList queryStr){return 0;/*remove later*/}
  184.     @SuppressWarnings("unchecked")
  185.     public T[] toArray(Class<T> t){//------------------------------------------------char[] toArray
  186.         T[] tArray;
  187.         //@SupressWarnings("unchecked")
  188.         tArray = (T[])Array.newInstance(t,this.size());
  189.         if(head != null){
  190.             for(int i=0; i<this.size(); i++){
  191.                 tArray[i] = getNode(i).value;
  192.             }
  193.         }
  194.         else
  195.             System.out.println("No valid entries.");
  196.         return tArray;
  197.     }
  198.     public int size(){//------------------------------------------------------------------int size
  199.         int i=0;
  200.         if(head!=null){
  201.             //i++;
  202.             Node temp = head;
  203.             while(temp!=null){
  204.                 temp = temp.next;
  205.                 i++;
  206.             }
  207.         }
  208.         return i;
  209.     }
  210.     public void print(){//-------------------------------------------------------------void print
  211.         for(int i=0; i<this.size() ; i++){
  212.             System.out.println(getNode(i).value);
  213.         }
  214.     }
  215.     public String toString(){//------------------------------------------------------string toString
  216.         StringBuilder string = new StringBuilder(this.size());
  217.         for(T c: this.toArray(null))
  218.             string.append(c);
  219.         return string.toString();
  220.     }
  221. }
Advertisement
Add Comment
Please, Sign In to add comment