数据结构算法--队列
来源:互联网 发布:thinkphp与php的区别 编辑:程序博客网 时间:2024/06/18 17:23
/**/////////////////////////////
// 队列数据结构 Queue.h //
/**/////////////////////////////
#include<iostream.h>
template<class Type> class Queue;
template<class Type> class QueueNode
{
friend class Queue<Type>;
private:
Type data;
QueueNode<Type> *link;
QueueNode(Type d=0,QueueNode *l=NULL):data(d),link(l)......{}
};
template <class Type> class Queue
{
public:
Queue():rear(NULL),front(NULL)......{}
~Queue();
void EnQueue(Type item);
Type DelQueue();
Type GetFront();
void MakeEmpty();
bool ISEmpty() ......{ return front==NULL; }
private:
QueueNode<Type> *front,*rear;
};
template<class Type>
Queue<Type>::~Queue()
{
QueueNode<Type> *p;
while(front!=NULL)
{
p=front;
front=front->link;
delete p;
}
}
template<class Type>
void Queue<Type>::EnQueue(Type item)
{
if(front==NULL)
front=rear=new QueueNode<Type> (item,NULL);
else
rear=rear->link=new QueueNode<Type> (item,NULL);
}
template<class Type>
Type Queue<Type>::DelQueue()
{
QueueNode<Type> *p=front;
Type temp=p->data;;
front=front->link;
delete p;
return temp;
}
template<class Type>
Type Queue<Type>::GetFront()
{
return front->data;
}
template<class Type>
void Queue<Type>::MakeEmpty()
{
QueueNode<Type> *p;
while(front!=NULL)
{
p=front;
front=front->link;
delete p;
}
}
/**//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// 队列功能函数 Queue.cpp //
// //
/**/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include"Queue.h"
const int INT =13;
const double FLOAT= 13.33;
const char CHAR ='a';
template<class Type>
void Queue_Enter(Queue<Type> &QueueOPP)
{
cout<<"请输入要插入队列的数据: ";
Type item;
cin>>item;
QueueOPP.EnQueue(item);
}
template<class Type>
void Queue_Del(Queue<Type> &QueueOPP)
{
if(!QueueOPP.ISEmpty())
{
cout<<"出队数据:"<<QueueOPP.DelQueue()<<endl;
}
else
{
cout<<"队列已为空!"<<endl;
}
}
template<class Type>
void Queue_ISEmpty(Queue<Type> &QueueOPP)
{
if(QueueOPP.ISEmpty())
{
cout<<"队列已空!"<<endl;
}
else
{
cout<<"队列不空!"<<endl;
}
}
template<class Type>
void Queue_GetFront(Queue<Type> &QueueOPP)
{
if(!QueueOPP.ISEmpty())
{
cout<<"队头元素为: "<<QueueOPP.GetFront()<<endl;
}
else
{
cout<<"队列已空!"<<endl;
}
}
template<class Type>
void Queue_MakeEmpty(Queue<Type> &QueueOPP)
{
QueueOPP.MakeEmpty();
cout<<"队列清空!"<<endl;
}
template<class Type>
void QueueINI(Type temp)
{
Queue<Type> QueueOPP;
do
{
cout<<"队列的操作: "<<endl
<<" 1) 插入队列"<<endl
<<" 2) 出队"<<endl
<<" 3) 队列是否为空"<<endl
<<" 4) 得队头数据项"<<endl
<<" 5) 销毁队列"<<endl
<<" X) 退出队列操作"<<endl;
int item;
cin>>item;
switch(item)
{
case 1: Queue_Enter(QueueOPP); break;
case 2: Queue_Del(QueueOPP); break;
case 3: Queue_ISEmpty(QueueOPP); break;
case 4: Queue_GetFront(QueueOPP); break;
case 5: Queue_MakeEmpty(QueueOPP); break;
default: return ;
}
}while(true);
}
void QUEUE() //根据不同的用户需要选择数据类型
{
int item;
cout<<"清选择数据类型: 1) 整型 2) 浮点型 3) 字符型 X) 退出: ";
cin>>item;
switch(item)
{
case 1: QueueINI(INT); break;
case 2: QueueINI(FLOAT); break;
case 3: QueueINI(CHAR); break;
default: return ; break;
}
}
// 队列数据结构 Queue.h //
/**/////////////////////////////
#include<iostream.h>
template<class Type> class Queue;
template<class Type> class QueueNode
{
friend class Queue<Type>;
private:
Type data;
QueueNode<Type> *link;
QueueNode(Type d=0,QueueNode *l=NULL):data(d),link(l)......{}
};
template <class Type> class Queue
{
public:
Queue():rear(NULL),front(NULL)......{}
~Queue();
void EnQueue(Type item);
Type DelQueue();
Type GetFront();
void MakeEmpty();
bool ISEmpty() ......{ return front==NULL; }
private:
QueueNode<Type> *front,*rear;
};
template<class Type>
Queue<Type>::~Queue()
{
QueueNode<Type> *p;
while(front!=NULL)
{
p=front;
front=front->link;
delete p;
}
}
template<class Type>
void Queue<Type>::EnQueue(Type item)
{
if(front==NULL)
front=rear=new QueueNode<Type> (item,NULL);
else
rear=rear->link=new QueueNode<Type> (item,NULL);
}
template<class Type>
Type Queue<Type>::DelQueue()
{
QueueNode<Type> *p=front;
Type temp=p->data;;
front=front->link;
delete p;
return temp;
}
template<class Type>
Type Queue<Type>::GetFront()
{
return front->data;
}
template<class Type>
void Queue<Type>::MakeEmpty()
{
QueueNode<Type> *p;
while(front!=NULL)
{
p=front;
front=front->link;
delete p;
}
}
/**//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// 队列功能函数 Queue.cpp //
// //
/**/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include"Queue.h"
const int INT =13;
const double FLOAT= 13.33;
const char CHAR ='a';
template<class Type>
void Queue_Enter(Queue<Type> &QueueOPP)
{
cout<<"请输入要插入队列的数据: ";
Type item;
cin>>item;
QueueOPP.EnQueue(item);
}
template<class Type>
void Queue_Del(Queue<Type> &QueueOPP)
{
if(!QueueOPP.ISEmpty())
{
cout<<"出队数据:"<<QueueOPP.DelQueue()<<endl;
}
else
{
cout<<"队列已为空!"<<endl;
}
}
template<class Type>
void Queue_ISEmpty(Queue<Type> &QueueOPP)
{
if(QueueOPP.ISEmpty())
{
cout<<"队列已空!"<<endl;
}
else
{
cout<<"队列不空!"<<endl;
}
}
template<class Type>
void Queue_GetFront(Queue<Type> &QueueOPP)
{
if(!QueueOPP.ISEmpty())
{
cout<<"队头元素为: "<<QueueOPP.GetFront()<<endl;
}
else
{
cout<<"队列已空!"<<endl;
}
}
template<class Type>
void Queue_MakeEmpty(Queue<Type> &QueueOPP)
{
QueueOPP.MakeEmpty();
cout<<"队列清空!"<<endl;
}
template<class Type>
void QueueINI(Type temp)
{
Queue<Type> QueueOPP;
do
{
cout<<"队列的操作: "<<endl
<<" 1) 插入队列"<<endl
<<" 2) 出队"<<endl
<<" 3) 队列是否为空"<<endl
<<" 4) 得队头数据项"<<endl
<<" 5) 销毁队列"<<endl
<<" X) 退出队列操作"<<endl;
int item;
cin>>item;
switch(item)
{
case 1: Queue_Enter(QueueOPP); break;
case 2: Queue_Del(QueueOPP); break;
case 3: Queue_ISEmpty(QueueOPP); break;
case 4: Queue_GetFront(QueueOPP); break;
case 5: Queue_MakeEmpty(QueueOPP); break;
default: return ;
}
}while(true);
}
void QUEUE() //根据不同的用户需要选择数据类型
{
int item;
cout<<"清选择数据类型: 1) 整型 2) 浮点型 3) 字符型 X) 退出: ";
cin>>item;
switch(item)
{
case 1: QueueINI(INT); break;
case 2: QueueINI(FLOAT); break;
case 3: QueueINI(CHAR); break;
default: return ; break;
}
}
0 0
- 数据结构链队列算法
- 【数据结构与算法】队列
- 数据结构算法--队列
- 数据结构--循环队列算法
- 数据结构与算法《队列》
- 数据结构与算法-队列
- 数据结构与算法--队列
- 数据结构与算法---队列
- 数据结构栈、队列算法
- 数据结构与算法-队列
- 数据结构与算法系列-队列-顺序队列
- 数据结构与算法系列-队列-循环队列
- 数据结构与算法--栈、队列(队列)
- 数据结构与算法系列---队列
- 数据结构与算法之队列
- 数据结构与算法分析-队列
- 数据结构与算法JavaScript - 队列
- [数据结构与算法] 6,队列
- 区分JS中的undefined,null,"",0和false
- 面向对象的三个基本特征
- 数据结构算法集--C++语言实现
- jquery easyui 日期框怎么禁用输入和日期框加readonly失效的解决办法
- 数据结构算法--堆栈
- 数据结构算法--队列
- 数据结构算法--链表
- VS2012 Release编译时出现 “error LNK2026: 模块对于 SAFESEH 映像是不安全的。” 错误提示的解决方法
- 数据结构算法--图
- 数据结构算法--排序
- 我的Linux内核学习之路
- 数据结构算法--二叉树
- IPTV中的流传输技术研究与分析
- Java中一些常被忽视的特性