Java Program To Reverse Singly Linked List
Chapter:
Interview Programs
Last Updated:
15-06-2016 19:39:31 UTC
Program:
/* ............... START ............... */
public class JavaReverseSinglyLinkedList<T> {
private Node<T> head;
public void add(T element) {
Node<T> nd = new Node<T>();
nd.setValue(element);
System.out.println("Adding: " + element);
Node<T> tmp = head;
while (true) {
if (tmp == null) {
head = nd;
break;
} else if (tmp.getNextRef() == null) {
tmp.setNextRef(nd);
break;
} else {
tmp = tmp.getNextRef();
}
}
}
public void traverse() {
Node<T> tmp = head;
while (true) {
if (tmp == null) {
break;
}
System.out.print(tmp.getValue() + "\t");
tmp = tmp.getNextRef();
}
}
public void reverse() {
System.out.println("\nreversing the linked list\n");
Node<T> prev = null;
Node<T> current = head;
Node<T> next = null;
while (current != null) {
next = current.getNextRef();
current.setNextRef(prev);
prev = current;
current = next;
}
head = prev;
}
public static void main(String a[]) {
JavaReverseSinglyLinkedList<Integer> sl = new JavaReverseSinglyLinkedList<Integer>();
sl.add(3);
sl.add(32);
sl.add(54);
sl.add(89);
System.out.println();
sl.traverse();
System.out.println();
sl.reverse();
sl.traverse();
}
}
class Node<T> implements Comparable<T> {
private T value;
private Node<T> nextRef;
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
public Node<T> getNextRef() {
return nextRef;
}
public void setNextRef(Node<T> ref) {
this.nextRef = ref;
}
@Override
public int compareTo(T arg) {
if (arg == this.value) {
return 0;
} else {
return 1;
}
}
}
/* ............... END ............... */
Output
Adding: 3
Adding: 32
Adding: 54
Adding: 89
3 32 54 89
reversing the linked list
89 54 32 3
Tags
Program To Reverse Singly Linked List, Java, Interview Programs