diff --git a/DataStructures/Stacks/StackOfLinkedList.java b/DataStructures/Stacks/StackOfLinkedList.java index 35052457fe1c..d9f737040271 100644 --- a/DataStructures/Stacks/StackOfLinkedList.java +++ b/DataStructures/Stacks/StackOfLinkedList.java @@ -1,7 +1,5 @@ /** - * * @author Varun Upadhyay (https://github.com/varunu28) - * */ // An implementation of a Stack using a Linked List @@ -25,9 +23,7 @@ public static void main(String[] args) { stack.pop(); System.out.println("Top element of stack currently is: " + stack.peek()); - } - } // A node class @@ -44,66 +40,71 @@ public Node(int data) { /** * A class which implements a stack using a linked list - * + *
* Contains all the stack methods : push, pop, printStack, isEmpty **/ class LinkedListStack { Node head = null; - int size = 0; public void push(int x) { Node n = new Node(x); - if (getSize() == 0) { + if (head == null) { head = n; - } - else { + } else { Node temp = head; n.next = temp; head = n; } - size++; } public void pop() { - if (getSize() == 0) { + if (head == null) { System.out.println("Empty stack. Nothing to pop"); } Node temp = head; head = head.next; - size--; - System.out.println("Popped element is: " + temp.data); } public int peek() { - if (getSize() == 0) { - return -1; - } - - return head.data; + if (head == null) { + return -1; + } + return head.data; } public void printStack() { - Node temp = head; System.out.println("Stack is printed as below: "); while (temp != null) { - System.out.println(temp.data + " "); + if (temp.next == null) { + System.out.print(temp.data); + } else { + System.out.print(temp.data + " -> "); + } temp = temp.next; } System.out.println(); - } public boolean isEmpty() { - return getSize() == 0; + return head == null; } public int getSize() { - return size; + if (head == null) + return 0; + else { + int size = 1; + Node temp = head; + while (temp.next != null) { + temp = temp.next; + size++; + } + return size; + } } - }