2020-10-07

    科技2024-07-30  63

    C++数据结构

    栈的顺序结构与操作

    定义一个顺序栈,可以对顺序栈进行“将某个元素入栈”、“弹出栈顶元素”、“取栈顶元素(不删除)”、“判断栈是否为空”、“清空栈”等操作。键盘输入一些命令,可以执行上述操作。本题中,顺序栈元素为字符,顺序栈的最大长度为10。 #include using namespace std;

    const int StackSize = 10;

    class SeqStack { public: SeqStack(); void Push(char x); char Pop(); char GetTop(); int Empty(); void Clear();

    private: char data[StackSize]; int top;

    };

    SeqStack::SeqStack() { top = -1; }

    void SeqStack::Push(char x) { if (top == StackSize - 1) { throw"None"; }

    data[++top] = x;

    }

    char SeqStack::Pop() {

    if (top == -1) { throw"None"; } return data[top--];

    }

    char SeqStack::GetTop() {

    if (top == -1) { throw"None"; } return data[top];

    }

    int SeqStack::Empty() { int i = 0;

    if (top == -1) { i = 1; } return i;

    }

    void SeqStack::Clear() { top = 1; }

    int main() { char T; SeqStack S;

    while (1) { cin >> T; if (T == 'P') { cin >> T; try { S.Push(T); } catch (const char *str) { cout << str << endl; } } else if (T=='D') { try { cout << S.Pop() << endl; } catch (const char* str) { cout << str << endl; } } else if (T=='G') { try { cout << S.GetTop() << endl; } catch (const char* str) { cout << str << endl; } } else if (T=='T') { S.Clear(); } else if (T == 'Y') { int i = S.Empty(); if (i == 1) { cout << "Yes" << endl; } else { cout << "No" << endl; } } else { break; } }

    }

    Processed: 0.012, SQL: 9