Created
January 10, 2016 17:58
-
-
Save thmain/3ca9a71e1f912e84f15d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class LinkListImplementation { | |
public static void main(String[] args) throws java.lang.Exception { | |
LinkedListT a = new LinkedListT(); | |
a.addAtBegin(5); | |
a.addAtBegin(15); | |
a.addAtEnd(20); | |
a.addAtEnd(21); | |
a.deleteAtBegin(); | |
a.deleteAtEnd(); | |
a.addAtIndex(10, 2); | |
a.addAtEnd(15); | |
a.display(); | |
System.out.println("\n Size of the list is: " + a.size); | |
System.out.println(" Element at 2nd position : " + a.elementAt(2)); | |
System.out.println(" Searching element 20, location : " + a.search(15)); | |
} | |
} | |
class Node { | |
public int data; | |
public Node next; | |
public Node(int data) { | |
this.data = data; | |
this.next = null; | |
} | |
} | |
class LinkedListT { | |
public Node head; | |
public int size; | |
public LinkedListT() { | |
head = null; | |
} | |
public void addAtBegin(int data) { | |
Node n = new Node(data); | |
n.next = head; | |
head = n; | |
size++; | |
} | |
public int deleteAtBegin() { | |
int tmp = head.data; | |
head = head.next; | |
size--; | |
return tmp; | |
} | |
public void deleteAtEnd() { | |
Node currNode = head; | |
if (head.next == null) { | |
head = null; | |
} else { | |
while (currNode.next.next != null) { | |
currNode = currNode.next; | |
} | |
int temp = currNode.next.data; | |
currNode.next = null; | |
size--; | |
} | |
} | |
public void addAtEnd(int data) { | |
if (head == null) { | |
addAtBegin(data); | |
} else { | |
Node n = new Node(data); | |
Node currNode = head; | |
while (currNode.next != null) { | |
currNode = currNode.next; | |
} | |
currNode.next = n; | |
size++; | |
} | |
} | |
public int elementAt(int index){ | |
if(index>size){ | |
return -1; | |
} | |
Node n = head; | |
while(index-1!=0){ | |
n=n.next; | |
index--; | |
} | |
return n.data; | |
} | |
public int getSize(){ | |
return size; | |
} | |
public int search(int data){ | |
Node n = head; | |
int count = 1; | |
while(n!=null){ | |
if(n.data==data){ | |
return count; | |
}else{ | |
n = n.next; | |
count++; | |
} | |
} | |
return -1; | |
} | |
public void addAtIndex(int data, int position){ | |
if(position == 1){ | |
addAtBegin(data); | |
} | |
int len = size; | |
if (position>len+1 || position <1){ | |
System.out.println("\nINVALID POSITION"); | |
} | |
if(position==len+1){ | |
addAtEnd(data); | |
} | |
if(position<=len && position >1){ | |
Node n = new Node(data); | |
Node currNode = head; //so index is already 1 | |
while((position-2)>0){ | |
System.out.println(currNode.data); | |
currNode=currNode.next; | |
position--; | |
} | |
n.next = currNode.next; | |
currNode.next = n; | |
size++; | |
} | |
} | |
public void display() { | |
System.out.println(""); | |
Node currNode = head; | |
while (currNode != null) { | |
System.out.print("->" + currNode.data); | |
currNode = currNode.next; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment