Applications
LL
package com.gs.corejava.datastructures;
public class MySinglyLinkedList<T> {
private class MyNode<E extends Object> {
E data;
MyNode<E> next = null;
public MyNode() {
}
public MyNode(E data) {
this.data = data;
}
}
private MyNode<T> start;
private int size = 0;
private MyNode<T> currentNode;
public MySinglyLinkedList() {
start = new MyNode<T>();
start.next = null;
}
public void add(T data) {
MyNode<T> myNode = new MyNode<T>(data);
MyNode<T> head = start;
MyNode<T> prev = start;
if (null == currentNode) {
while (null != head) {
prev = head;
head = head.next;
}
currentNode = myNode;
prev.next = currentNode;
} else {
currentNode.next = myNode;
currentNode = myNode;
}
size++;
}
public void addFirst(T data) {
MyNode<T> myNode = new MyNode<T>(data);
MyNode<T> head = start;
myNode.next = head.next;
head.next = myNode;
size++;
}
public void addLast(T data) {
add(data);
}
public void add(T data, int index) {
MyNode<T> myNode = new MyNode<T>(data);
MyNode<T> head = start;
MyNode<T> prev = start;
int currentIndex = 0;
while (null != head && currentIndex <= index) {
prev = head;
head = head.next;
currentIndex++;
}
myNode.next = prev.next;
prev.next = myNode;
size++;
}
public MyNode<T> remove(T data) {
MyNode<T> node = new MyNode<T>(data);
MyNode<T> head = start;
MyNode<T> prev = start;
while (null != head) {
if (null != node.data && node.data.equals(head.data)) {
break;
}
prev = head;
head = head.next;
}
prev.next = head.next;
head = null;
size--;
return node;
}
public MyNode<T> remove(int index) {
MyNode<T> head = start;
MyNode<T> prev = start;
int currentIndex = 0;
while (null != head && currentIndex <= index) {
prev = head;
head = head.next;
currentIndex++;
}
MyNode<T> myNodeToReturn = head;
prev.next = head.next;
head = null;
size--;
return myNodeToReturn;
}
public Object[] toArray() {
Object[] array = new Object[size];
int k = 0;
MyNode<T> head = start.next;
while (null != head) {
array[k] = head.data;
k++;
head = head.next;
}
return array;
}
}
package com.gs.corejava.datastructures;
public class TestLinkedList {
public static void main(String[] args) {
testIntegerLinkedListAdd();
System.out.println("---for String objects---");
testStringLinkedListAddMethod();
System.out.println("---for Custom objects like Teacher----");
testCustomObjLinkedListAdd();
}
/**
*
*/
private static void testIntegerLinkedListAdd() {
MySinglyLinkedList<Integer> linkedList = new MySinglyLinkedList<Integer>();
linkedList.add(123);
linkedList.add(456);
linkedList.add(454);
linkedList.add(224);
linkedList.add(-80, 2);
linkedList.addFirst(12);
linkedList.remove(new Integer(454));
linkedList.remove(2);
Object[] arr = linkedList.toArray();
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
/**
*
*/
private static void testCustomObjLinkedListAdd() {
// ---------for Custom objects like Teacher-----------
MySinglyLinkedList<Teacher> listOfTeacher = new MySinglyLinkedList<Teacher>();
Teacher teacher1 = new Teacher(1, "Mohit");
Teacher teacher2 = new Teacher(2, "Sumit");
Teacher teacher3 = new Teacher(3, "Sahil");
Teacher teacher4 = new Teacher(4, "Naveen");
listOfTeacher.add(teacher1);
listOfTeacher.add(teacher2);
listOfTeacher.add(teacher3);
listOfTeacher.add(teacher4);
Object[] arrayOfTeacher = listOfTeacher.toArray();
Teacher teacherObj;
for (int i = 0; i < arrayOfTeacher.length; i++) {
if (arrayOfTeacher[i] instanceof Teacher) {
teacherObj = (Teacher) arrayOfTeacher[i];
System.out.println(teacherObj);
}
}
}
/**
*
*/
private static void testStringLinkedListAddMethod() {
// -------for String objects-------
MySinglyLinkedList<String> listOfNames = new MySinglyLinkedList<String>();
listOfNames.add("Mohit");
listOfNames.add("Rohit");
listOfNames.add("Sumit");
listOfNames.add("Amit");
Object[] arrayOfNames = listOfNames.toArray();
for (int i = 0; i < arrayOfNames.length; i++) {
System.out.println(arrayOfNames[i]);
}
}
}
class Teacher {
private int id;
private String name;
/**
* @param id
* @param name
*/
public Teacher(int id, String name) {
super();
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "Teacher [id=" + id + ", name=" + name + "]";
}
}
Last updated