顺序栈实现

来源:互联网 发布:通联数据股份公司电话 编辑:程序博客网 时间:2024/06/01 12:25
#include <iostream>using namespace std;namespace seqstack {    const int kStackSize = 100;    typedef char DataType;    typedef struct {        DataType data[kStackSize];        int top;    }SeqStack;    void InitStack(SeqStack *seq_stack) {        memset(seq_stack, 0, sizeof(SeqStack));        seq_stack->top = -1;    }    bool StackEmpty(const SeqStack &seq_stack) {        return seq_stack.top == -1;    }    bool StackFull(const SeqStack &seq_stack) {        return seq_stack.top == kStackSize - 1;    }    void Push(SeqStack *seq_stack, DataType elem) {        if (StackFull(*seq_stack)) {            cout << "栈满" << endl;            return;        }        seq_stack->data[++seq_stack->top] = elem;    }    DataType Pop(SeqStack *seq_stack) {        if (StackEmpty(*seq_stack)) {            cout << "栈空" << endl;            exit(0);        }        DataType top_elem= seq_stack->data[seq_stack->top--];        return top_elem;    }    DataType GetTop(const SeqStack &seq_stack) {        if (StackEmpty(seq_stack)) {            cout << "栈空" << endl;            exit(0);        }        return seq_stack.data[seq_stack.top];    }    int Size(const SeqStack &seq_stack) {        return seq_stack.top + 1;    }}void PrintStack(seqstack::SeqStack *seq_stack) {    cout << "[";    int size = seqstack::Size(*seq_stack);    for (int index = 0; index < size; ++index) {        seqstack::DataType elem =  seqstack::Pop(seq_stack);        cout << elem << " ";    }    cout << "]" << endl;}int main() {    seqstack::SeqStack seq_stack;    seqstack::InitStack(&seq_stack);    seqstack::Push(&seq_stack, 'a');    seqstack::Push(&seq_stack, 'b');    seqstack::Push(&seq_stack, 'c');    PrintStack(&seq_stack);    return 0;}

0 0
原创粉丝点击