Go4Expert

Go4Expert (http://www.go4expert.com/)
-   Java (http://www.go4expert.com/forums/java/)
-   -   Recursion on a LinkedList (http://www.go4expert.com/forums/recursion-linkedlist-t21081/)

cyrow 23Feb2010 14:21

Recursion on a LinkedList
 
Code:

ublic class LinkedList<T>{
    private Node head;
   
   
    public LinkedList()
    {
        head = null;
    }
   
    public boolean isEmpty()
    {
        return (head==null);
    }
   
    public void addToHead(T val )
    {
        Node n = new Node(val);
        n.next = head;
        head  = n;
    }
   
   
    public T getHeadData(){
        if(head == null){
            throw new RuntimeException("attempt to get data from an empty list !");
        }
        else{
            return head.data;
        }
    }
   
    public void deleteHead(){
        if(head ==  null){
            throw new RuntimeException("Deleting from an empty list !");
        }else{
            head= head.next;
        }
    }
 
    public void addToTail(T val)//show no result
    {
        Node n = new Node (val);   
        if(head==null)
            head = n;
        else{
            Node curr = head;
            curr = curr.next;
            curr.next = n;
            addToTail(val);
        }   
    }//end addtail
 
 
   
    public void delete(T val){//does not return a result (shows no errors)
        Node curr=null;
        if(head !=null){
            if(head.data==val)
                head = head.next;
            else{
                curr = head;
                curr = curr.next;
                delete(curr.data);
            }
        }
    }
   
    public void insertSorted(T val){
        Node y = new Node(val);
       
        if(head==null || val < head.data)//operator < cannot be applied to T, T
            head = y;
        else
            head = head.next;
            insertSorted(head.data);
    }
   
   
    public boolean contains(T val)
    {
           
        if(head!=null){
            if(head.data==val)
                return true;
                head = head.next;
            return contains(val);
        }
        return false;
   
    }//end of contains
   
       
    public String toString(){
        String str = " ";
        Node curr = head;
        while(curr !=null){
            str = str + curr.data +" ";
            curr = curr.next;
        }
        return str + "\n";
    }
   
   
    public class Node{
        public T data;
        public Node next;
       
        public Node(T val){
            data = val;
            next = null;
        }
    }//End of node class
}//Linked List
 
 
class TestLinkedList{
    public static void main(String[] args){
       
        LinkedList<Integer>ST = new LinkedList<Integer>();
       
        for(int i = 0; i < 10; i++){  //correctly load linkedlist
            ST.addToHead(i);
        }
       
       
            System.out.println(ST.toString()); //print list
           
                   
            boolean y = ST.contains(12);
          System.out.println(y);
 
     
          ST.addToTail(200); //returns nothing
              System.out.println(ST.toString());
         
                     
            ST.delete(5);
            System.out.println(ST.toString());
 
            insertSorted(11);
            System.out.println(ST.toString());
       
    }//end main
}//end class
 
Need help.
public void addToTail(T val)
public void delete(T val)
public void insertSorted(T val)
I need help to get the above functions to work recursively.  I am able to get them work iteratively, no problem.  When I try to write the functions re cursively, I am not able to see any results. I am at a lost understanding why.



All times are GMT +5.5. The time now is 03:48.