C++ 指针堆栈
#ifndef PRO1_STCKTP_H#define PRO1_STCKTP_Htemplate <class Type>class Stack {private:    enum {SIZE = 10};    int stacksize;    Type * items;    int top;public:    explicit Stack(int ss = SIZE);    Stack(const Stack& st);    ~Stack(){delete [] items;};    bool isempty(){ return top == 0; }    bool isfull(){ return top == stacksize;}    bool push(const Type & item);    bool pop(Type & item);    Stack &operator=(const Stack & st);};template <class Type>Stack<Type>::Stack(int ss) :stacksize(ss), top(0){ items = new Type[stacksize]; }template <class Type>Stack<Type>::Stack(const Stack &st) {    stacksize = st.stacksize;    top = st.top;    items = new Type[stacksize];    for(int i = 0; i < top; i++)        items[i] = st.items[i];}template <class Type>bool Stack<Type>::push(const Type &item) {    if (top < stacksize) {        items[top++] = item;        return true;    } else        return false;}template <class Type>bool Stack<Type>::pop(Type &item) {    if (top > 0) {        item = items[--top];        return true;    } else        return false;}template <class Type>Stack<Type>& Stack<Type>::operator=(const Stack<Type> &st) {    if (this == &st) {        return *this;    }    delete [] items;    stacksize = st.stacksize;    top = st.top;    items = new Type[stacksize];    for (int i = 0; i < top; i++)        items[i] = st.items[i];    return *this;}#endif //PRO1_STCKTP_H
#include "stcktp.h"
#include <iostream>#include "module11_class_template/pointer_stack/stcktp.h"using namespace std;// 正确使用指针堆栈const int Num = 10;void usePointerStack(){    srand(time(0));    cout << "Please enter stack size: ";    int stacksize;    cin >> stacksize;    Stack<const char *> st(stacksize);    const char * in[Num] = {            "1:Hank Gilgamesh", "2:Kiki Ishtar", "3:Betty Rocker", "4:Ian Flagranti",            "5:Wolfgang Kibble", "6:Portia Koop", "7:Joy Almonda", "8:Xaverie Paprika",            "9:Juan Moore", "10:Misha Mache"    };    const char * out[Num];    int processed = 0;    int nextin = 0;    while (processed < Num) {        if (st.isempty()) {            st.push(in[nextin++]);        } else if(st.isfull())            st.pop(out[processed++]);        else if (rand()%2 && nextin < Num)            st.push(in[nextin++]);        else            st.pop(out[processed++]);        for (int i = 0; i < Num; i++)            cout << out[i] << endl;        cout << "Bye\n";    }}int main() {    usePointerStack();    return 0;}