首页 > 代码库 > CTCI 3.1
CTCI 3.1
Describe how you could use a single array to implement three stacks.
Divide the array into three fixed parts, each stands for a stack.
/*Fixed Size Stacks*/import java.util.*;public class ThreeStacks { int stackSize = 100; int[] buffer = new int[stackSize * 3]; int[] stackPointer = {-1, -1, -1}; public void push(int stackNum, int key) throws Exception { if(stackPointer[stackNum] + 1 >= stackSize) { throw new Exception("Out of Memory"); } stackPointer[stackNum]++; buffer[stackNum * stackSize + stackPointer[stackNum]] = key; } public int pop(int stackNum) throws Exception { if(stackPointer[stackNum] == -1) { throw new Exception("No Elements"); } int key = buffer[stackNum * stackSize + stackPointer[stackNum]]; stackPointer[stackNum]--; return key; } public int peek(int stackNum) throws Exception { if(stackPointer[stackNum] == -1) { throw new Exception("No Elements"); } return buffer[stackNum * stackSize + stackPointer[stackNum]]; } public boolean isEmpty(int stackNum) { return stackPointer[stackNum] == -1; } public static void main(String[] args) { ThreeStacks ts = new ThreeStacks(); try { ts.push(0, 10); ts.push(1, 20); ts.push(2, 30); ts.push(0, 90); System.out.print(ts.pop(0) + " " + ts.pop(1) + " " + ts.pop(0) + " " + ts.pop(2)); } catch(Exception e) { System.out.println(e.toString()); } }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。