C++顺序栈的模版
来源:互联网 发布:黑道圣徒4捏脸数据 编辑:程序博客网 时间:2024/06/14 03:26
#if 0
//顺序栈的模板
#include <assert.h>
const int maxSize = 50;
const bool{false,true};
template <class T>
class Stack
{
public:
Stack(){};
virtual bool Push(const T &x) = 0;
virtual bool Pop(T &x) = 0;
virtual bool getTop (T &x) const = 0;
virtual bool IsEmpty() const = 0;
virtual bool IsFull () const = 0;
virtual int getSize () const = 0;
};
const int stackIncreament = 20;
template <class T>
class SeqStack : public Stack<T>
{
public:
SeqStack(int sz = 50);
~SeqStack(){delete [] elements;}
void Push(const T &x);
bool Pop(T &x);
bool getTop(T &x);
bool IsEmpty()const {return top == -1 ? true : false;}
bool IsFull () const {return top == maxSize - 1 ? true : false;}
int getSize ()const {return top1;}
void MakeEmpty(){top = -1;}
friend ostream & operator << (ostream &os, SeqStack<T> &s);
private:
T *elements;
int top;
inr maxSize;
void overflowProcess();
};
template <class T>
SeqStack<T> ::SeqStack(int sz):top(-1),maxSize(sz)
{
elements = new T[maxSize];
assert(elements != NULL);
};
template <class T>
void SeqStack<T>::overflowProcess()
{
T *newArray = new T[maxSize + stackIncreament];
if(newArray == NULL )
{
cout<"error!"<<endl;
exit(1);
}
for(int i = 0 ;i <= top ; i++)
{
newArray[i] = elements[i];
}
maxSize = maxSize + stackIncreament;
delete [] elements;
elements = newArray;
};
template <class T>
void SeqStack<T> ::Push(const T *x)
{
if (IsFull() == true )
{
overflowProcess();
}
else
{
elements[++top] = x;
}
};
template <class T>
bool SeqStack<T> ::Pop(T &x)
{
if(IsEmpty() == true)
return false;
else
{
x = elements[top --];
return true;
}
};
template <class T>
bool SeqStack<T>::getTop(T &x)
{
if (IsEmpty() == true)
return false;
else
{
x = elements[top];
return true;
}
};
template <class T>
ostream& operator << (ostream &os , SeqStack <T> s)
{
os<<"top =" <<s.top <<endl;
for(int i = 0;i <= s.top; i++)
{
os<<i<<":"<<s.elements[i] << endl;
}
return os;
};
#endif
//顺序栈的模板
#include <assert.h>
const int maxSize = 50;
const bool{false,true};
template <class T>
class Stack
{
public:
Stack(){};
virtual bool Push(const T &x) = 0;
virtual bool Pop(T &x) = 0;
virtual bool getTop (T &x) const = 0;
virtual bool IsEmpty() const = 0;
virtual bool IsFull () const = 0;
virtual int getSize () const = 0;
};
const int stackIncreament = 20;
template <class T>
class SeqStack : public Stack<T>
{
public:
SeqStack(int sz = 50);
~SeqStack(){delete [] elements;}
void Push(const T &x);
bool Pop(T &x);
bool getTop(T &x);
bool IsEmpty()const {return top == -1 ? true : false;}
bool IsFull () const {return top == maxSize - 1 ? true : false;}
int getSize ()const {return top1;}
void MakeEmpty(){top = -1;}
friend ostream & operator << (ostream &os, SeqStack<T> &s);
private:
T *elements;
int top;
inr maxSize;
void overflowProcess();
};
template <class T>
SeqStack<T> ::SeqStack(int sz):top(-1),maxSize(sz)
{
elements = new T[maxSize];
assert(elements != NULL);
};
template <class T>
void SeqStack<T>::overflowProcess()
{
T *newArray = new T[maxSize + stackIncreament];
if(newArray == NULL )
{
cout<"error!"<<endl;
exit(1);
}
for(int i = 0 ;i <= top ; i++)
{
newArray[i] = elements[i];
}
maxSize = maxSize + stackIncreament;
delete [] elements;
elements = newArray;
};
template <class T>
void SeqStack<T> ::Push(const T *x)
{
if (IsFull() == true )
{
overflowProcess();
}
else
{
elements[++top] = x;
}
};
template <class T>
bool SeqStack<T> ::Pop(T &x)
{
if(IsEmpty() == true)
return false;
else
{
x = elements[top --];
return true;
}
};
template <class T>
bool SeqStack<T>::getTop(T &x)
{
if (IsEmpty() == true)
return false;
else
{
x = elements[top];
return true;
}
};
template <class T>
ostream& operator << (ostream &os , SeqStack <T> s)
{
os<<"top =" <<s.top <<endl;
for(int i = 0;i <= s.top; i++)
{
os<<i<<":"<<s.elements[i] << endl;
}
return os;
};
#endif
阅读全文
0 0
- C++顺序栈的模版
- 顺序表结构的模版类
- 【C++】模版类实现普通类静态顺序表
- 顺序栈的实现 c
- 顺序栈的C实现
- 模版实现顺序表
- 对于模版中实例化的的顺序问题
- 【C++数据结构】顺序表的模版类实现
- 通用c/c++的Makefile模版
- c/c++的参数压栈顺序
- c/c++的参数压栈顺序
- 顺序栈的C语言实现
- 顺序栈的实现(C语言)
- C语言参数的入栈顺序
- 顺序栈的C语言实现
- C语言 顺序栈的使用
- 顺序栈的实现(ANSI C)
- 数据结构的C实现_顺序栈
- Python + OpenCV 实现简单的人脸识别
- jetty.io.EofException Broken pipe
- c++实验6-【项目3:矩阵求和】
- 猜数字游戏
- 面试复习——Android工程师之Java面试题
- C++顺序栈的模版
- shellcode攻击 64位
- 还原bootstrap下的fieldset
- ambari server架构图
- ConfigParser 读取 config 配置文件
- 音频帧概念详解(基础)
- 用Java的套接字编程实现一个多线程的回显(echo)服务器
- Python脚本编译出现语法错误:IndentationError: unindent does not match any outer indentation level
- ajax回调函数没反应----条件分页查询sql