首页 > 其他 > 详细

CTCI 3.1

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

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!