Skip to content

Commit

Permalink
added approach 6 of 6 in java
Browse files Browse the repository at this point in the history
  • Loading branch information
GauravWalia19 committed Dec 28, 2018
1 parent e3723e8 commit 6b0cdca
Show file tree
Hide file tree
Showing 3 changed files with 163 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,6 @@ public void setNext(Node next)
public LinkedList()
{
head=null;
size=0;
hash = new int[1000];
counter=0;
}

/**
Expand Down
162 changes: 162 additions & 0 deletions Java/Data-Structures/LISTS/MISC/Nth-node-from-end/Approach6.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
import java.util.*;
abstract class Approach6
{
/**
* LINKED LIST CLASS
**/
private static class LinkedList
{
/**
* NODE CLASS
* for linked list node
**/
private class Node
{
private int data;
private Node next;

//constructor
public Node(int data)
{
this.data=data;
next=null;
}

/**
* getData()
* @return data in the node
**/
public int getData()
{
return data;
}

/**
* getNext()
* @return the next node
**/
public Node getNext()
{
return next;
}

/**
* setNext()
* @param next
**/
public void setNext(Node next)
{
this.next=next;
}
}

private Node head; //head of the linked list
private int size; //size of the linked list
private int counter;

//constructor for linked list
public LinkedList()
{
head=null;
size=0;
counter=0;
}

/**
* getHead()
* @return the head node
**/
public Node getHead()
{
return head;
}

/**
* insert_at_head()
* it will insert node at the head of the linked list
* @param data
**/
public void insert_at_head(int data)
{
Node newNode = new Node(data);
if(head==null)
{
head=newNode;
}
else
{
newNode.setNext(head);
head=newNode;
}
size++;
}

/**
* print_list()
* it will print the linked list
**/
public void printList()
{
if(head==null)
{
System.out.println("NULL");
}
else
{
Node current=head;
while(current!=null)
{
System.out.print(current.getData() +" -> ");
current=current.getNext();
}
System.out.println("NULL");
}
}

/*====================================================================*/
/**
* APPROACH 6
* using recursion
* in backtracking count the nodes
* count equal to nthnode will be printed
**/
public void printNthNodeFromLast(Node current,int num)
{
if(num>size)
{
System.out.println("OUT OF BOUND");
return;
}
if(current==null)
{
return;
}
printNthNodeFromLast(current.getNext(),num);
counter++;
if(counter==num)
{
System.out.println(current.getData());
return;
}
}
/*====================================================================*/
}

public static void main(String[] args)
{
LinkedList ll = new LinkedList();
ll.insert_at_head(3);
ll.insert_at_head(1);
ll.insert_at_head(4);
ll.insert_at_head(2);
ll.insert_at_head(5);
ll.printList();

Scanner in = new Scanner(System.in);
System.out.println("Enter the nth node from last");
int n = in.nextInt();

ll.printNthNodeFromLast(ll.getHead(), n);
in.close();
}
}
2 changes: 1 addition & 1 deletion Java/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
* APPROACH 3: [Using hashtable](Data-Structures/LISTS/MISC/Nth-node-from-end/Approach3.java)
* APPROACH 4: [Using Hashtable while adding](Data-Structures/LISTS/MISC/Nth-node-from-end/Approach4.java)
* APPROACH 5: [Finding node in one scan](Data-Structures/LISTS/MISC/Nth-node-from-end/Approach5.java)
* APPROACH 6: Using recursion
* APPROACH 6: [Using recursion](Data-Structures/LISTS/MISC/Nth-node-from-end/Approach6.java)

#### STACKS

Expand Down

0 comments on commit 6b0cdca

Please sign in to comment.