首先,感谢你的阅读,本人观点:学习编程是个漫长的过程并不是一时就会很厉害的,关键是坚持,快乐地学习,在这里分享我的一些笔记给你;
很多人使用C++的时候,一碰到队列就会头疼,队列这种数据结构与栈一样,是一个工具性的数据结构,通常被其它复杂数据结构所使用。队列是即可以用数组,也可以用链表实现,我们这里就用双向链表实现这一数据结构,以此为大家讲解一下:C++模块的队列如何实现。
//Queue.h
//双链表队列数据结构C++模块的实现
//理论知识参考《数据结构(C语言版)--严慰明》
#ifndef_QUEUE_H_
#define_QUEUE_H_
namespace_QUEUE_
{
//队列中的数据元素
template<typenameT>
classQueueNode
{
public:
QueueNode()
{
this->mElement=0;
this->mpNext=this->mpPrev=NULL;
}
TmElement;
QueueNode<T>*mpNext;
QueueNode<T>*mpPrev;
};
template<typenameT>
classQueue
{
public:
Queue()
{
QueueNode<T>*pNode=newQueueNode<T>;
pNode->mElement=T(-1);
pNode->mpNext=pNode->mpPrev=NULL;
this->mpHead=this->mpTail=pNode;
}
~Queue()
{
this->clear();
deletethis->mpHead;
this->mpHead=this->mpTail=NULL;
}
boolinsert(Telement);
Tfront();
Tback();
boolisEmpty(void);
boolclear(void);
intsize();
friendostream&operator《<>(ostream&ostr,constQueue<T>&q);
private:
QueueNode<T>*mpHead;
QueueNode<T>*mpTail;
};
template<typenameT>
boolQueue<T>::insert(Telement)
{
QueueNode<T>*pNode=newQueueNode<T>;
if(pNode==NULL)returnfalse;
pNode->mElement=element;
this->mpTail->mpNext=pNode;
pNode->mpPrev=this->mpTail;
this->mpTail=this->mpTail->mpNext;
returntrue;
}
template<typenameT>
TQueue<T>::front()
{
Telement=T();
QueueNode<T>*pNode=NULL;
if(!this->isEmpty())
{
pNode=this->mpHead->mpNext;
element=pNode->mElement;
this->mpHead->mpNext=pNode->mpNext;
if(pNode->mpNext)
pNode->mpNext->mpPrev=this->mpHead;
if(pNode==this->mpTail)
this->mpTail=this->mpHead;
deletepNode;
}
从基础的学习到后面应用提高都非常的系统,无论你是本专业的还是跨专业的,都能有所收获,参加4个月的达内时光转眼已逝,伴随着喜悦,达内给你一个新的平台,一个崭新的开始。
(本文由广州达内http://www.gdtarena.com/为你分享;)
很多人使用C++的时候,一碰到队列就会头疼,队列这种数据结构与栈一样,是一个工具性的数据结构,通常被其它复杂数据结构所使用。队列是即可以用数组,也可以用链表实现,我们这里就用双向链表实现这一数据结构,以此为大家讲解一下:C++模块的队列如何实现。
//Queue.h
//双链表队列数据结构C++模块的实现
//理论知识参考《数据结构(C语言版)--严慰明》
#ifndef_QUEUE_H_
#define_QUEUE_H_
namespace_QUEUE_
{
//队列中的数据元素
template<typenameT>
classQueueNode
{
public:
QueueNode()
{
this->mElement=0;
this->mpNext=this->mpPrev=NULL;
}
TmElement;
QueueNode<T>*mpNext;
QueueNode<T>*mpPrev;
};
template<typenameT>
classQueue
{
public:
Queue()
{
QueueNode<T>*pNode=newQueueNode<T>;
pNode->mElement=T(-1);
pNode->mpNext=pNode->mpPrev=NULL;
this->mpHead=this->mpTail=pNode;
}
~Queue()
{
this->clear();
deletethis->mpHead;
this->mpHead=this->mpTail=NULL;
}
boolinsert(Telement);
Tfront();
Tback();
boolisEmpty(void);
boolclear(void);
intsize();
friendostream&operator《<>(ostream&ostr,constQueue<T>&q);
private:
QueueNode<T>*mpHead;
QueueNode<T>*mpTail;
};
template<typenameT>
boolQueue<T>::insert(Telement)
{
QueueNode<T>*pNode=newQueueNode<T>;
if(pNode==NULL)returnfalse;
pNode->mElement=element;
this->mpTail->mpNext=pNode;
pNode->mpPrev=this->mpTail;
this->mpTail=this->mpTail->mpNext;
returntrue;
}
template<typenameT>
TQueue<T>::front()
{
Telement=T();
QueueNode<T>*pNode=NULL;
if(!this->isEmpty())
{
pNode=this->mpHead->mpNext;
element=pNode->mElement;
this->mpHead->mpNext=pNode->mpNext;
if(pNode->mpNext)
pNode->mpNext->mpPrev=this->mpHead;
if(pNode==this->mpTail)
this->mpTail=this->mpHead;
deletepNode;
}
从基础的学习到后面应用提高都非常的系统,无论你是本专业的还是跨专业的,都能有所收获,参加4个月的达内时光转眼已逝,伴随着喜悦,达内给你一个新的平台,一个崭新的开始。
(本文由广州达内http://www.gdtarena.com/为你分享;)