>>656
機能は最低限。
class array_stack {
    int DATA_MAX, data_num, *data;
public:
    array_stack(int max = 100) : DATA_MAX(max), data_num(0) {data = new int[DATA_MAX];}
    ~array_stack() {delete[] data;}
    bool empty() {return data_num == 0;}
    int pop() {if (empty()) throw "empty!"; return data[--data_num];}
    void push(int t) {
        if (data_num + 1 == DATA_MAX) throw "full!";
        data[data_num++] = t;
    }
};
class array_queue {
    int DATA_MAX, data_num, *data;
public:
    array_queue(int max = 100) : DATA_MAX(max), data_num(0) {data = new int[DATA_MAX];}
    ~array_queue() {delete[] data;}
    bool empty() {return data_num == 0;}
    int pop() {if (empty()) throw "empty!"; return data[--data_num];}
    void push(int t) {
        if (data_num + 1 == DATA_MAX) throw "full!";
        int* first = data, * last = data + data_num;
        while (last != first) {--last; *(last + 1) = *last;}
        data[0] = t;
        ++data_num;
    }
};