diff --git a/Data Structures/Stacks/StackOfLinkedList.java b/Data Structures/Stacks/StackOfLinkedList.java index 8903e52f0e72..3db8535c8ad6 100644 --- a/Data Structures/Stacks/StackOfLinkedList.java +++ b/Data Structures/Stacks/StackOfLinkedList.java @@ -56,8 +56,7 @@ public void push(int x) { head = n; } else { - Node temp = head; - n.next = temp; + n.next = head; head = n; } size++; diff --git a/Data Structures/Stacks/Stacks.java b/Data Structures/Stacks/Stacks.java index 2861ef5c17e8..cd338fa3edf0 100644 --- a/Data Structures/Stacks/Stacks.java +++ b/Data Structures/Stacks/Stacks.java @@ -54,13 +54,14 @@ public void push(int value){ */ public int pop(){ if(!isEmpty()){ //Checks for an empty stack - return stackArray[top--]; - } - - if(top < maxSize/4){ - resize(maxSize/2); - return pop();// don't forget pop after resizing - } + if(top < maxSize/4){ + resize(maxSize/2); + return pop();// don't forget pop after resizing + } + int data = stackArray[top]; + stackArray[top--] = 0; + return data; + } else{ System.out.println("The stack is already empty"); return -1; @@ -86,11 +87,18 @@ private void resize(int newSize){ int[] transferArray = new int[newSize]; //for(int i = 0; i < stackArray.length(); i++){ the length isn't a method . - for(int i = 0; i < stackArray.length; i++){ - transferArray[i] = stackArray[i]; - stackArray = transferArray; - } - maxSize = newSize; + if(newSize > maxSize){ + for(int i = 0; i < stackArray.length; i++){ + transferArray[i] = stackArray[i]; + } + } + else{ + for(int i = 0; i < transferArray.length; i++){ + transferArray[i] = stackArray[i]; + } + } + stackArray = transferArray; + maxSize = newSize; } /**