Create/ implement stack using single linked list in java (generics /example)

  • Create stack in java using linked list.
  • We will implement stack using java generics.
    • We will create a stack class, which will be used for integer & string data types.
  • The Stack class will have following methods
    1. Push method: Push method will be used to insert new element to the stack.
    2. Pop method: Pop method will remove top element of the stack.
    3. Size method: Size method will return current size of the stack.
    4. isEmpty method: isEmpty method will check, whether stack contains any element.

Program – Create or implement stack using single linked list in java

1.) Stack class:

  • Stack class composing generic linked list as underlying data structure.
  • Stack class implements push & pop operations to insert & remove element(s).
  • Stack class contains utility methods like isEmpty & size.
package org.learn;

import java.util.EmptyStackException;
import java.util.LinkedList;

public class Stack<T> {

    private LinkedList<T> stack;

    public Stack() {
        stack = new LinkedList();
    }

    public void push(T element) {
        stack.addFirst(element);
    }

    public T pop() {

        if (isEmpty()) {
            throw new EmptyStackException();
        }
        return stack.removeFirst();
    }

    public boolean isEmpty() {
        if (stack.size() == 0) {
            return true;
        }
        return false;
    }

    public int size() {
        return stack.size();
    }
}

2.) StackClient:

  • StackClient class is client of Stack class.
  • StackClient class will create Stack class & push integers (and string) to the stack.
  • StackClient class will traverse the stack & pop all elements from stack.
  • We will print size of stack, before & after pop operations.
package org.learn;

public class StackClient {

    public static void main(String[] args) {

        System.out.println("1. Stack of integers");
        stackOfIntegers();

        System.out.println("\n2. Stack of Strings");
        stackOfIStrings();
    }

    private static void stackOfIStrings() {

        Stack<String> stack = new Stack();
        stack.push("Five");
        stack.push("Four");
        stack.push("Three");
        stack.push("Two");
        stack.push("One");

        System.out.println("1.1 Size of stack after push operations: " + stack.size());

        System.out.printf("1.2. Pop elements from stack : ");
        while (!stack.isEmpty()) {
            System.out.printf(" %s", stack.pop());
        }

        System.out.println("\n1.3. Size of stack after pop operations : " + stack.size());
    }

    private static void stackOfIntegers() {

        Stack<Integer> stack = new Stack();
        stack.push(5);
        stack.push(4);
        stack.push(3);
        stack.push(2);
        stack.push(1);

        System.out.println("2.1. Size of stack after push operations: " + stack.size());
        System.out.printf("2.2. Pop elements from stack : ");

        while (!stack.isEmpty()) {
            System.out.printf(" %d", stack.pop());
        }

        System.out.println("\n3.3 Size of stack after pop operations : " + stack.size());
    }
}

Output – Create or implement stack using single linked list in java

1. Stack of integers
2.1. Size of stack after push operations: 5
2.2. Pop elements from stack :  1 2 3 4 5
3.3 Size of stack after pop operations : 0

2. Stack of Strings
1.1 Size of stack after push operations: 5
1.2. Pop elements from stack :  One Two Three Four Five
1.3. Size of stack after pop operations : 0
Scroll to Top