谈谈怎样来实现C++模块的队列

首先,感谢你的阅读,本人观点:学习编程是个漫长的过程并不是一时就会很厉害的,关键是坚持,快乐地学习,在这里分享我的一些笔记给你;
  很多人使用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/为你分享;)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值