Queue-C++template
来源:互联网 发布:小学信息技术编程ppt 编辑:程序博客网 时间:2024/05/11 19:07
//this is a Queue 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 "QueueLink.h"
using namespace std;
int main(int argc, char *argv[])
{
cout<<"Queue class template with pointer.../n";
//1.constrator QueueArray(),~QueueArray() test ok
QueueLink<int> int1; //QueueArray
//2.IsEmpty(),IsFull() test ok
cout<<"int1.IsEmpty()="<<int1.IsEmpty()<<endl; //IsEmpty()
cout<<"int1.IsFull()="<<int1.IsFull()<<endl; //IsFull()
//3.GetHead(),GetTail(),In(item),Out(),Print() test ok
int1.In(10); //In(item)
int1.In(20);
int1.In(30);
int1.In(40);
int1.In(88);
cout<<"int1.GetHead()="<<int1.GetHead()<<endl; //GetHead()
cout<<"int1.GetTail()="<<int1.GetTail()<<endl; //GetTail()
int1.Print(); //Print()
int1.Out(); //Out()
int1.Print();
int1.In(99);
int1.Print();
system("Pause");
return 0;
}
/*
*QueueLink.h
*this is a QueueLink template by pointer link
*QueueLink ADT
*writer:chinayaosir ,QQ:44633197
*blog http://blog.csdn.net/chinayaosir
*date:07/08/2008
*/
#ifndef H_QueueLink
#define H_QueueLink
#include <iostream>
#include <iomanip>
#include <cstring>
#include <cassert>
using namespace std;
template <class T>
struct NodeType{
T info;
NodeType<T> *link;
};
template <class T>
class QueueLink
{
public:
//1.constrator QueueLink(),~QueueLink()
QueueLink();
~QueueLink();
//2.IsEmpty(),IsFull()
bool IsEmpty();
bool IsFull();
//3.GetHead(),GetTail(),In(item),Out()
//In=入队列,Out=出队列
T GetHead();
T GetTail();
void In(const T& item);
void Out();
//4.Destory(),Print
void Destory();
void Print();
//protected:
private:
NodeType<T> *QueueFront;
NodeType<T> *QueueRear;
};
//1.constrator QueueLink(),~QueueLink()
template <class T>
QueueLink<T>::QueueLink(){
QueueFront=NULL;
QueueRear=NULL;
}
template <class T>
QueueLink<T>::~QueueLink(){
Destory();
QueueFront=NULL;
QueueRear=NULL;
}
//2.IsEmpty(),IsFull()
template <class T>
bool QueueLink<T>::IsEmpty(){
return (QueueFront==NULL);
}
template <class T>
bool QueueLink<T>::IsFull(){
return false;
}
//3.GetHead(),GetTail(),Insert(),Delete()
template <class T>
T QueueLink<T>::GetHead(){
assert(QueueFront!=NULL);
return QueueFront->info;
}
template <class T>
T QueueLink<T>::GetTail(){
assert(QueueRear!=NULL);
return QueueRear->info;
}
template <class T>
void QueueLink<T>::In(const T& item){
NodeType<T> *newnode;
newnode= new NodeType<T>;
assert(newnode!=NULL);
newnode->info=item;
newnode->link=NULL;
if(QueueFront==NULL){
QueueFront=newnode;
QueueRear=newnode;
}
else{
QueueRear->link=newnode;
QueueRear=newnode;
}
}
template <class T>
void QueueLink<T>::Out(){
NodeType<T> *temp;
if(QueueFront!=NULL){
temp=QueueFront;
QueueFront=QueueFront->link;
delete temp;
}
if(QueueFront==NULL)
QueueRear=NULL;
}
//4.Destory(),Print()
template <class T>
void QueueLink<T>::Destory(){
NodeType<T> *temp;
if (QueueFront!=NULL){
while(QueueFront!=NULL){
temp=QueueFront;
QueueFront=QueueFront->link;
delete temp;
}
QueueRear=NULL;
}
}
template <class T>
void QueueLink<T>::Print(){
NodeType<T> *temp,*current;
current=QueueFront;
assert(current!=NULL);
while(current!=NULL){
temp=current;
current=current->link;
cout<<temp->info<<" ";
}
cout<<endl;
}
#endif
- Queue-C++template
- Tools - Template Queue
- Queue with Template
- 2738 Queue with Template(eden)
- C++template
- C template
- C++Template
- queue.c
- queue.c
- c-queue?
- C/C++-----------00queue-------
- list c++template
- Stack-c++template
- C++Template之Priority_queue
- [C++] Template练习
- eclipse-c-template
- eclipse-c-template
- C++template ;模板学习
- 软件开发过程反思——从需求分析到最后开发出来的软件
- 收藏一个sqlfront的SN
- 在这个地方好好呆着,用文字记录我的成长...
- Embedded Linux 技术与概念解析
- flash wmode参数详解
- Queue-C++template
- Linux文件查找命令find,xargs详述(ZT)
- Stack-c++template
- Error 1 Inconsistent accessibility: parameter type 编译错误
- 软件缺陷的分类与管理
- 软件错误跟踪处理流程
- C/S与B/S的详细区别
- Stack-c++ template
- 如何写软件测试缺陷管理的报告