循环队列的链表表示
来源:互联网 发布:微博营销软件 编辑:程序博客网 时间:2024/06/02 03:01
#include"LinkedList.h"
#include"Queue.h"
template<class T>
class LinkedQueue
{
public:
LinkedQueue():rear(NULL),front(NULL){}
~LinkedQueue(){makeEmpty();}
bool EnQueue(const T& x);
bool DeQueue(T& x);
bool getFront(T& x)const;
void makeEmpty();
bool IsEmpty()const{return(front==rear)?true:false;}
int getSize()const;
// bool IsFull()const{return((rear+1)%maxSize==front)?true:false;}
friend ostream& operator<<(ostream& os,LinkedQueue<T>& Q);
protected:
LinkNode<T> *front, *rear;
};
template<class T>
void LinkedQueue<T>::makeEmpty()
{
LinkNode<T> *p;
while(front!=NULL)
{
p=front;
front=front->link;
delete p;
}
};
template<class T>
bool LinkedQueue<T>::EnQueue(const T& x)
{
if(front==NULL)
{
front=rear=new LinkNode<T>(x);//空队列时,新结点成为队列的第一个结点,既是对头也是队尾
if(front==NULL) return false;
}
else
{
rear->link=new LinkNode<T>(x);//非空时在链尾追加新的结点并更新队尾指针
if(rear->link==NULL) return false;
rear=rear->link;
}
return true;
};
template<class T>
bool LinkedQueue<T>::DeQueue(T& x)
{
if(IsEmpty()==true) return false;
LinkNode<T> *p=front;
x=front->data;
front=front->link;
delete p;
return true;
};
template<class T>
bool LinkedQueue<T>::getFront(T& x)const
{
if(IsEmpty()==true) return false;
x=front->data;
return true;
};
template<class T>
int LinkedQueue<T>::getSize()const
{
LinkNode<T> *p=front;
int k=0;
while(p!=NULL)
{
p=p->link;
k++;
}
return k;
};
template<class T>
ostream& operator<<(ostream& os,LinkedQueue<T>& Q)
{
os<<"队列中的元素个数有"<<Q.getSize()<<endl;
LinkNode<T> *p=Q.front;
int i=0;
while(p!=NULL)
{
os<<++i<<":"<<p->data<<endl;
p=p->link;
}
return os;
}
#include"Queue.h"
template<class T>
class LinkedQueue
{
public:
LinkedQueue():rear(NULL),front(NULL){}
~LinkedQueue(){makeEmpty();}
bool EnQueue(const T& x);
bool DeQueue(T& x);
bool getFront(T& x)const;
void makeEmpty();
bool IsEmpty()const{return(front==rear)?true:false;}
int getSize()const;
// bool IsFull()const{return((rear+1)%maxSize==front)?true:false;}
friend ostream& operator<<(ostream& os,LinkedQueue<T>& Q);
protected:
LinkNode<T> *front, *rear;
};
template<class T>
void LinkedQueue<T>::makeEmpty()
{
LinkNode<T> *p;
while(front!=NULL)
{
p=front;
front=front->link;
delete p;
}
};
template<class T>
bool LinkedQueue<T>::EnQueue(const T& x)
{
if(front==NULL)
{
front=rear=new LinkNode<T>(x);//空队列时,新结点成为队列的第一个结点,既是对头也是队尾
if(front==NULL) return false;
}
else
{
rear->link=new LinkNode<T>(x);//非空时在链尾追加新的结点并更新队尾指针
if(rear->link==NULL) return false;
rear=rear->link;
}
return true;
};
template<class T>
bool LinkedQueue<T>::DeQueue(T& x)
{
if(IsEmpty()==true) return false;
LinkNode<T> *p=front;
x=front->data;
front=front->link;
delete p;
return true;
};
template<class T>
bool LinkedQueue<T>::getFront(T& x)const
{
if(IsEmpty()==true) return false;
x=front->data;
return true;
};
template<class T>
int LinkedQueue<T>::getSize()const
{
LinkNode<T> *p=front;
int k=0;
while(p!=NULL)
{
p=p->link;
k++;
}
return k;
};
template<class T>
ostream& operator<<(ostream& os,LinkedQueue<T>& Q)
{
os<<"队列中的元素个数有"<<Q.getSize()<<endl;
LinkNode<T> *p=Q.front;
int i=0;
while(p!=NULL)
{
os<<++i<<":"<<p->data<<endl;
p=p->link;
}
return os;
}
- 循环队列的链表表示
- 用带头循环链表表示队列的问题
- 队列的链表表示
- 3.6使用带头结点的循环链表链表表示队列
- 带头结点的循环链表表示队列的初始化、入队列和出队列的算法
- 带头结点的循环链表表示队列的初始化、入队列和出队列的算法
- 用单向循环链表表示的队列的插入和删除的具体原理 (c++)
- 双端队列(链表表示)
- 约瑟夫环问题(循环链表表示)
- 假设以带头结点的循环链表表示队列, 并且只设一个指针指向队尾元素结点(注意不设头指针) 试编写相应的队列初始化,入队列和出队列的算法
- 栈的链表表示
- 图的链表表示
- 栈的链表表示
- 1227 链表表头循环
- 假设以不带头结点的循环链表表示队列,并且只设一个指针指向队尾结点,但不设头指针。试设计相应的入队和出队的算法
- 数据结构之 队列 链表表示与数组表示
- 利用循环链表表示大整数 C语言
- 树的儿子链表表示法
- 学习Model-Glue框架的系列教程-Building your first Model-Glue Application中文理解通俗版(6)
- 关闭IIS HTTPRERR日志功能
- SQL Server 2008 Full Text Searching SSMS Demo(SQL2008全文检索演示代码)(来自msdn)
- 传李开复将离开谷歌中国 由刘允接替职位
- VS2008中关于将旧VC方案修改为最新的MFC Feature Pack最需要注意的问题
- 循环队列的链表表示
- Adobe彻底改造Photoshop 推移动版本
- Windows 2008 Roles and Features
- 解析#pragma指令
- 循环队列的数组表示函数的实现
- 关于typedef一句话的解释
- log080905
- 循环队列的数组表示函数的实现
- iPhone girl原是论坛站长自我炒作