码迷,mamicode.com
首页 > 其他好文 > 详细

CTCI 3.1

时间:2014-07-11 10:45:34      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   java   color   os   

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());
        }
    }
}

 

CTCI 3.1,布布扣,bubuko.com

CTCI 3.1

标签:des   style   blog   java   color   os   

原文地址:http://www.cnblogs.com/pyemma/p/3834157.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!