队列链式存储结构的C++模板类头文件源代码实现

原创 2016年06月01日 14:37:46

队列的链式存储结构与链表的区别除了成员函数的不同以外,还有队列的成员变量增加了尾指针,这是因为增加变量需要从链表的尾部添加,若每次从头结点开始遍历的话太费时间,头指针是一个空数据的节点指针,它是一个一直存在的指针,rear指针指向队列的最后一个元素,当最后一个元素也删除时,将rear指针赋值给front,这样队列就满足了队列为空的条件。下面是队列链式存储结构的C++模板类头文件源代码:

//linkedqueue.h
#ifndef LINKEDQUEUE_H
#define LINKEDQUEUE_H
#include <IOSTREAM>
template<class Type>
struct LNode{
Type data;
LNode<Type>* next;
};
template<class Type>
class LinkedQueue
{
private:
LNode<Type>* front,* rear;
public:
LinkedQueue();
~LinkedQueue();
bool AddElement(Type);
Type DeleteElement();
bool IsEmpty();
void Print();
};
template<class Type>
LinkedQueue<Type>::LinkedQueue()
{
front=new LNode<Type>;
rear=front;
front->next=NULL;
front->data=(Type)-111;
}
template<class Type>
LinkedQueue<Type>::~LinkedQueue()
{
LNode<Type>* temp=front;
while(temp)
{
LNode<Type>* tempvalue=temp;
temp=temp->next;
delete tempvalue;
}
}
template<class Type>
bool LinkedQueue<Type>::AddElement(Type x)
{
LNode<Type>* temp=new LNode<Type>;
temp->data=x;
temp->next=NULL;
rear->next=temp;
rear=temp;
return true;
}
template<class Type>
Type LinkedQueue<Type>::DeleteElement()
{
if(front==rear)
return Type(-111);
LNode<Type>* temp=front->next;
front->next=front->next->next;
Type x=temp->data;
if(temp==rear)
rear=front;
delete temp;
return x;
}
template<class Type>
bool LinkedQueue<Type>::IsEmpty()
{
return (front==rear?true:false);
}
template<class Type>
void LinkedQueue<Type>::Print()
{
LNode<Type>* temp=front->next;
while(temp)
{
std::cout<<temp->data<<" ";
temp=temp->next;
}
std::cout<<std::endl;
}
#endif

版权声明:本文为博主原创文章,未经博主允许不得转载。

单链队列,队列的链式存储结构C++实现

//mList.cpp /* 使用链式结构实现队列操作 @author:天下无双 @date:2014-5-28 @version:2.0 */ #include using namespa...
  • guang_jing
  • guang_jing
  • 2014年05月28日 12:25
  • 1045

Java基础 - 队列的链式存储结构及实现

类似于使用链式结构保存线性表,也可以采用链式结构来保存队列的元素,采用链式存储结构的队列也被称为链队列。...
  • ApatheCrazyFan
  • ApatheCrazyFan
  • 2016年11月08日 15:24
  • 1203

数据结构——队列的链式存储结构以及实现

队列也是一种特殊的线性表,只允许在一端进行插入操作,在另一端进行删除操作。允许插入的一段为对尾,允许删除的一端为队头。本次记录的是队列的链式存储结构以及实现。该存储结构有两个指针,一个指向头节点,称为...
  • Carry_zwxb
  • Carry_zwxb
  • 2016年10月29日 16:04
  • 957

队列-链式结构-C++实现

教科书告诉我们所先进先出的结构叫做队列,没错,就是队列,正如排队一样了,出队永远在队头,入队永远在队尾,我们要频繁对这两个点进行操作,那么应该选择什么样的结构来实现呢?数组,特点:实现简单,容量有限,...
  • xiongyangg
  • xiongyangg
  • 2015年04月16日 22:08
  • 1134

循环队列-链式存储结构-c语言实现

/* 循环队列-线性表-链式结构 */ #include #include #define OK 1 #define ERROR 0typedef int Status; typedef i...
  • u010187139
  • u010187139
  • 2015年07月03日 15:57
  • 1421

循环队列和链式结构队列

一、循环队列的基础知识 1,循环队列有几个参数需要确定:       有两个参数,front和rear 2,循环队列各个参数的含义 (1)队列初始化时,front和rear值都为零; ...
  • u010949971
  • u010949971
  • 2017年02月27日 13:22
  • 827

数据结构队列C++实现 链式和循环

#include #include #include using namespace std; namespace my_space { template class queue...
  • a363344923
  • a363344923
  • 2014年12月07日 15:34
  • 1696

链式队列的C++实现

链式队列的C++实现
  • lfeng_coding
  • lfeng_coding
  • 2015年08月13日 16:36
  • 3857

数据结构之自建算法库——链队(链式队列)

本文针对数据结构基础系列网络课程(3):栈和队列中第10课时队列的链式存储结构及其基本运算的实现。按照“0207将算法变程序”[视频]部分建议的方法,建设自己的专业基础设施算法库。链队算法库采用程序的...
  • sxhelijian
  • sxhelijian
  • 2015年09月15日 10:48
  • 3760

队列的顺序存储结构

队列是一种先进先出(First In First Out)的线性表,简称FIFO。在队尾进行插入(front),在队头进行删除(rear)。 以下以一个循环队列为例进行实现。 循环队列空的条件...
  • generalhking
  • generalhking
  • 2013年02月28日 14:25
  • 1231
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:队列链式存储结构的C++模板类头文件源代码实现
举报原因:
原因补充:

(最多只允许输入30个字)