注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

孤独侠的博客

 
 
 

日志

 
 

嵌套类(nested class)  

2013-10-18 11:16:25|  分类: C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

//queuetp.h
#ifndef QUEUETP_H_
#define QUEUETP_H_
template <class Item>
class QueueTP
{
private:
 enum {Q_SIZE = 10};
 class Node
 {
 public:
  Item item;
  Node * next;
  Node(const Item & i): item(i), next(0) { }
 };
    Node * front;
 Node * rear;
 int items;
 const int qsize;
 QueueTP(const QueueTP & q):qsize(0){ }
 QueueTP & operator= (const QueueTP & q) {return *this;}
 public:
 QueueTP (int qs = Q_SIZE);
 ~QueueTP ();
 bool isempty()const
 {
  return items==0;
 }
 bool isfull()const
 {
  return items==qsize;
 }
 int queuecount()const
 {
  return items;
 }
bool enqueue (const Item & item);
 
bool dequeue(Item & item);
 
 };
 
//QueueTP methods 
 template <class Item>
 QueueTP<Item>::QueueTP(int qs):qsize(qs)
 {
  front = rear = 0;
  items = 0;
 }
 
 template <class Item>
 QueueTP<Item>::~QueueTP()
 {
  Node * temp;
  while(front != 0)
  {
   temp=front;
   front=front->next;
   delete temp;
  }
    } 

  template <class Item>
 bool QueueTP <Item>::enqueue(const Item & item)
 {
  if(isfull())
      return false;
  Node * add = new Node(item);
  if(add ==NULL)
      return false;
  items++;
  if(front==0)
      front = add;
  else
      rear->next=add;
  rear=add;
  return true;
 }

  template <class Item>
 bool QueueTP<Item>::dequeue(Item & item)
 {
  if(front == 0)
      return false;
  item = front->item;
  items--;
  Node * temp = front;
  front = front->next;
  delete temp;
  if (items == 0)
      rear = 0;
  return true;
 }
#endif
//nested.cpp
#include<iostream>
#include<string>
#include"queuetp.h"
int main()
{
 using std::string;
 using std::cin;
 using std::cout;
 
 QueueTP<string> cs(5);
 string temp;
 while(!cs.isfull())
 {
  cout << "Please enter your name.You will be"
          "served in the order of arrival.\n"
          "name: ";
  getline(cin,temp);
  cs.enqueue(temp);
 }
 cout << "The queue is full. Processing begins!\n";
 while(!cs.isempty())
 {
  cs.dequeue(temp);
  cout<<"Now processing "<< temp<<"...\n";
 }
 return 0;
}
  评论这张
 
阅读(4)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017