1. 程式人生 > >資料結構——棧

資料結構——棧

#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;

}