資料結構——棧
阿新 • • 發佈:2018-12-11
#include<iostream> #include<stdlib.h> using namespace std; class stack{ public: stack(int msize); ~stack(); bool isEmpty(); bool isFull(); int length(); bool push(char x); bool pop(char &x); void trverse(bool isFromButton); private: int top;//棧頂,棧中元素個數 //棧中元素個數為0,top所指位置為 int maxtop;//棧容量 char *s;//棧空間指標 }; stack::stack(int msize){ maxtop = msize; top = 0;//棧中元素個數為0 s = new char[maxtop]; } stack::~stack(){ delete []s; } bool stack::isEmpty(){ if (top ==0) return true;//棧中元素個數為0,棧為空 else return false; } bool stack::isFull(){ if (top == maxtop) return true;//棧滿 else return false; } int stack::length(){ return top;//返回棧中元素個數 } bool stack::push(char x){//x入棧 if (isFull()) { return false; } else{ s[top]=x ;//s[top]位置此時為空,放進去。top指標向上進一位,那個位置為空 top++; return true; } } bool stack::pop(char &x){ if (isEmpty()){ return false; } top--; s[top]=x ; return true; } void stack::trverse(bool isFromButton){ if (isFromButton){ for (int i = 0; i < top; i++){ cout << s[i] << endl; } } if (!isFromButton){ for (int i = maxtop - 1; i >= 0; i--){ cout << s[i] << endl; } } } int main(){ stack a(5); a.push('d'); a.push('c'); cout << a.length()<<endl; a.trverse(true); system("pause"); return 0; }