GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — Java/Data Structures/Stacks/Stacks.java at master · lisaem/Java Expand file tree/ Copy pathStacks.javaMore file actions 240 lines (214 loc) · 5.44 KB / Copy pathStacks.javaFile metadata and controls240 lines (214 loc) · 5.44 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 import java.util.ArrayList; /** * This class implements a Stack using two different implementations. * Stack is used with a regular array and Stack2 uses an ArrayList. * * A stack is exactly what it sounds like. An element gets added to the top of * the stack and only the element on the top may be removed. This is an example * of an array implementation of a Stack. So an element can only be added/removed * from the end of the array. In theory stack have no fixed size, but with an * array implementation it does. * * @author Unknown * */ class Stack{ /** The max size of the Stack */ private int maxSize; /** The array representation of the Stack */ private int[] stackArray; /** The top of the stack */ private int top; /** * Constructor * * @param size Size of the Stack */ public Stack(int size){ maxSize = size; stackArray = new int[maxSize]; top = -1; } /** * Adds an element to the top of the stack * * @param value The element added */ public void push(int value){ if(!isFull()){ //Checks for a full stack top++; stackArray[top] = value; }else{ resize(maxSize*2); push(value);// don't forget push after resizing } } /** * Removes the top element of the stack and returns the value you've removed * * @return value popped off the Stack */ 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 } else{ System.out.println("The stack is already empty"); return -1; } } /** * Returns the element at the top of the stack * * @return element at the top of the stack */ public int peek(){ if(!isEmpty()){ //Checks for an empty stack return stackArray[top]; }else{ System.out.println("The stack is empty, cant peek"); return -1; } } private void resize(int newSize){ //private int[] transferArray = new int[newSize]; we can't put modifires here ! 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; } /** * Returns true if the stack is empty * * @return true if the stack is empty */ public boolean isEmpty(){ return(top == -1); } /** * Returns true if the stack is full * * @return true if the stack is full */ public boolean isFull(){ return(top+1 == maxSize); } /** * Deletes everything in the Stack * * Doesn't delete elements in the array * but if you call push method after calling * makeEmpty it will overwrite previous * values */ public void makeEmpty(){ //Doesn't delete elements in the array but if you call top = -1; //push method after calling makeEmpty it will overwrite previous values } } /** * This is an ArrayList Implementation of stack, Where size is not * a problem we can extend the stack as much as we want. * * @author Unknown * */ class Stack2{ /** ArrayList representation of the stack */ ArrayList<Integer> stackList; /** * Constructor */ Stack2(){ stackList=new ArrayList<>(); } /** * Adds value to the end of list which * is the top for stack * * @param value value to be added */ void push(int value){ stackList.add(value); } /** * Pops last element of list which is indeed * the top for Stack * * @return Element popped */ int pop(){ if(!isEmpty()){ // checks for an empty Stack int popValue=stackList.get(stackList.size()-1); stackList.remove(stackList.size()-1); //removes the poped element from the list return popValue; } else{ System.out.print("The stack is already empty "); return -1; } } /** * Checks for empty Stack * * @return true if stack is empty */ boolean isEmpty(){ if(stackList.isEmpty()) return true; else return false; } /** * Top element of stack * * @return top element of stack */ int peek(){ return stackList.get(stackList.size()-1); } } /** * This class implements the Stack and Stack2 created above * * @author Unknown * */ public class Stacks{ /** * Main method * * @param args Command line arguments */ public static void main(String args[]){ Stack myStack = new Stack(4); //Declare a stack of maximum size 4 //Populate the stack myStack.push(5); myStack.push(8); myStack.push(2); myStack.push(9); System.out.println("*********************Stack Array Implementation*********************"); System.out.println(myStack.isEmpty()); //will print false System.out.println(myStack.isFull()); //will print true System.out.println(myStack.peek()); //will print 9 System.out.println(myStack.pop()); //will print 9 System.out.println(myStack.peek()); // will print 2 Stack2 myStack2 = new Stack2(); //Declare a stack of maximum size 4 //Populate the stack myStack2.push(5); myStack2.push(8); myStack2.push(2); myStack2.push(9); System.out.println("*********************Stack List Implementation*********************"); System.out.println(myStack2.isEmpty()); //will print false System.out.println(myStack2.peek()); //will print 9 System.out.println(myStack2.pop()); //will print 9 System.out.println(myStack2.peek()); // will print 2 System.out.println(myStack2.pop()); //will print 2 } } |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |