Publish Your Article Here

Program: How to reverse Singly Linked List?

Write a sample code to reverse Singly Linked List by iterating through it only once.

Recursive Method:
	1) Divide the list in two parts - first node and rest of the linked list.
	2) Call reverse for the rest of the linked list.
	3) Link rest to first.
	4) Fix head pointer.

package com.java2novice.ds.linkedlist;
public class SinglyLinkedListImpl<T> {
    private Node<T> head;
    public void add(T element){
        Node<T> nd = new Node<T>();
        System.out.println("Adding: "+element);
        Node<T> tmp = head;
        	if(tmp == null){
                //since there is only one element, both head and 
                //tail points to the same object.
                head = nd;
            } else if(tmp.getNextRef() == null){
            } else {
            	tmp = tmp.getNextRef();
    public void traverse(){
        Node<T> tmp = head;
            if(tmp == null){
            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();
    		prev = current;
    		current = next;
    	head = prev;
    public static void main(String a[]){
        SinglyLinkedListImpl<Integer> sl = new SinglyLinkedListImpl<Integer>();
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;
    public int compareTo(T arg) {
        if(arg == this.value){
            return 0;
        } else {
            return 1;

Adding: 3
Adding: 32
Adding: 54
Adding: 89

3	32	54	89	

reversing the linked list

89	54	32	3	
Next Program >>
blog comments powered by Disqus

List Of All Interview Programs:

  1. How to reverse Singly Linked List?
  2. Find out duplicate number between 1 to N numbers.
  3. Find out middle index where sum of both ends are equal.
  4. Write a singleton class.
  5. Write a program to create deadlock between two threads.
  6. Write a program to reverse a string using recursive algorithm.
  7. Write a program to reverse a number.
  8. Write a program to convert decimal number to binary format.
  9. Write a program to find perfect number or not.
  10. Write a program to implement ArrayList.
  11. Write a program to find maximum repeated words from a file.
  12. Wrie a program to find out duplicate characters in a string.
  13. Write a program to find top two maximum numbers in a array.
  14. Write a program to sort a map by value.
  15. Write a program to find common elements between two arrays.
  16. How to swap two numbers without using temporary variable?
  17. Write a program to print fibonacci series.
  18. Write a program to find sum of each digit in the given number using recursion.
  19. Write a program to check the given number is a prime number or not?
  20. Write a program to find the given number is Armstrong number or not?
  21. Write a program to convert binary to decimal number.
  22. Write a program to check the given number is binary number or not?
  23. Write a program for Bubble Sort in java.
  24. Write a program for Insertion Sort in java.
  25. Write a program to implement hashcode and equals.
  26. How to get distinct elements from an array by avoiding duplicate elements?
  27. Write a program to get distinct word list from the given file.
  28. Write a program to get a line with max word count from the given file.
  29. Write a program to convert string to number without using Integer.parseInt() method.
  30. Write a program to find two lines with max characters in descending order.
  31. Write a program to find the sum of the first 1000 prime numbers.
  32. Find longest substring without repeating characters.
  33. Write a program to remove duplicates from sorted array.
  34. How to sort a Stack using a temporary Stack?
Knowledge Centre
Difference between while and do-while
The while statement verifies the condition before entering into the loop to see whether the next loop iteration should occur or not. The do-while statement executes the first iteration without checking the condition, it verifies the condition after finishing each iteration. The do-while statement will always execute the body of a loop at least once.
Famous Quotations
The pessimist complains about the wind; the optimist expects it to change; the realist adjusts the sails.
-- William Arthur Ward

About Author

Most Visited Pages

Other Interesting Sites

Reference: Java™ Platform Standard Ed. 7 - API Specification | Java is registered trademark of Oracle.
Privacy Policy | Copyright © 2017 by Nataraja Gootooru. All Rights Reserved.