Stack-c++ template
来源:互联网 发布:小学信息技术编程ppt 编辑:程序博客网 时间:2024/05/23 18:05
//this is a link stack template by C
//It complied ok with dev-c and vc 6.0
//Fine name is Test.cpp
#include <cstdlib>
#include <iostream>
#include <cstring>
#include "StackList.h"
using namespace std;
int main(int argc, char *argv[])
{
cout<<"Stack class template demo.../n";
//1.constrator Stack(),~Stack()
StackList<int> int1,int2;
//2.IsEmpty(),IsFull()
cout<<"int2.IsEmpty()="<<int2.IsEmpty()<<endl; //IsEmpty()
cout<<"int2.IsFull()="<<int2.IsFull()<<endl; //IsFull()
//3.top(),push(item),pop()
int1.push(11); //push(item)
cout<<int1.top()<<" "; //top()
int1.push(22);
cout<<int1.top()<<" ";
int1.push(33);
cout<<int1.top()<<" "<<endl;
while(!int1.IsEmpty()){
cout<<int1.top()<<" ";
int1.pop(); //pop()
}
system("Pause");
return 0;
}
/*
*StackList.h
*this is a StackList template by pointer link
*StackList ADT
*writer:chinanetboy ,QQ:44633197
*blog http://chinanetboy.bokee.com
*date:07/01/2008
*/
#ifndef H_StackList
#define H_StackList
#include <iostream>
#include <iomanip>
#include <cstring>
#include <cassert>
using namespace std;
//StackList ADT list
template <class T>
struct NodeType{
T info;
NodeType<T> *link;
};
template <class T>
class StackList
{
public:
//1.constrator StackList(),~StackList()
StackList();
~StackList();
//2.IsEmpty(),IsFull()
bool IsEmpty();
bool IsFull();
//3.top(),push(item),pop()
T top();
void push(const T& item);
void pop();
//protected:
private:
NodeType<T> *DataTop;
};
//1.constrator StackList(),~StackList()
template <class T>
StackList<T>::StackList(){
DataTop=NULL;
}
template <class T>
StackList<T>::~StackList(){
NodeType<T> *temp;
while(DataTop!=NULL){
temp=DataTop;
DataTop=DataTop->link;
delete temp;
}
}
//2.IsEmpty(),IsFull()
template <class T>
bool StackList<T>::IsEmpty(){
return(DataTop==NULL);
}
template <class T>
bool StackList<T>::IsFull(){
return false;
}
//3.top(),push(item),pop()
template <class T>
T StackList<T>::top(){
assert(DataTop!=NULL);
return DataTop->info;
}
template <class T>
void StackList<T>::pop(){
NodeType<T> *temp;
if(DataTop!=NULL){
temp=DataTop;
DataTop=DataTop->link;
delete temp;
}
}
template <class T>
void StackList<T>::push(const T& item){
NodeType<T> *newnode;
newnode=new NodeType<T>;
assert(newnode!=NULL);
newnode->info=item;
newnode->link=DataTop;
DataTop=newnode;
}
#endif
- Stack-c++template
- [C++]Stack with Template
- Stack-c++ template
- Tools - Template Sequence stack
- Stack with Template
- Stack Using a C++ Template:
- 2739 Stack with Template (eden)
- C++_class Template about Stack(使用类模板实现栈操作)
- C++template
- C template
- C++Template
- c++:stack
- 借用template和vector模拟Stack
- C++ template--类模版Stack的实现
- 2742 Review Template and Stack (eden)
- list c++template
- Queue-C++template
- C++Template之Priority_queue
- Stack-c++template
- Error 1 Inconsistent accessibility: parameter type 编译错误
- 软件缺陷的分类与管理
- 软件错误跟踪处理流程
- C/S与B/S的详细区别
- Stack-c++ template
- 如何写软件测试缺陷管理的报告
- Freemarker 实现类型转换
- Reverse Engineering Code with IDA Pro
- string template-c++
- 一次性批量上传百张图片并保存到数据库中
- java数据结构
- Linked List-C++
- 程序的静态测试之源程序静态分析