스 택 (stack) 의 템 플 릿 클래스 및 구성원 함수 구현

용기 의 데이터 구 조 는 모두 템 플 릿 류 로 이 루어 집 니 다. 스 택 (stack), 대기 열 (queue), 쌍 단 대기 열 (deque), 벡터 (vector) 등 을 포함 하고 다음은 스 택 의 템 플 릿 류 와 구성원 함수 의 실현 입 니 다.
정의 헤더 파일
#include
#include
using namespace std;

const int stackIncreament=20;
template
class SeqStack{
public:
	SeqStack(int sz = 50);
	~SeqStack();
	bool push(const T& x);
	bool pop(const T& x);
	bool isFull()const{return (top == maxsize-1)?true:false;}
	bool isEmpty()const{return (top ==-1)?true:false;}
	int getsize(){return top+1;}
	T gettop();
	void makeEmpty(){top = -1;}
private:
	T * element;
	int maxsize;
	int top;
	void overflowProcess();
};

구성원 함수 의 실현
#include "stack.h"

template
SeqStack::SeqStack(int sz):top(-1),maxsize(sz){
	element = new T[maxsize];
	assert(element!=NULL);
}
template
bool SeqStack::push(const T& x){
	if(isFull()==true)return false;
	element[++top]=x;
	return true;
}
template
bool SeqStack::pop(const T& x){
	if(isEmpty()==true)return false;
	x = element[top--];
	return true;
}
template
T SeqStack::gettop(){
	if(isEmpty()==true)return -1;
	T x = element[top];
	return x;
}
template
void SeqStack::overflowProcess(){
	T* newarray = new T[maxsize+stackIncreament];
	if(newarray==NULL){
		cerr<

좋은 웹페이지 즐겨찾기