自己觉得没错 但是还是过不了

来源:互联网 发布:手机安卓版通达信软件 编辑:程序博客网 时间:2024/04/30 04:31

#include<iostream.h>
#include "Queue.h"
#include<cstdlib>
template<class type>
class QueueItem{
 public:
  QueueItem(const type &st):Item(t){next=0;}

 private:
  type Item;
  QueueItem *next;
};
template<class type>
class Queue{
 public:
  Queue() : front(0),back(0){}
  ~Queue();
  type remove();
  void add(const type &);
  bool is_empty() const {
   return front == 0;
  }
 private:
  QueueItem<type> *front;
  QueueItem<type> *back;
};
template <class type>
Queue<type>::~Queue(){
 while (! is_empty())
  remove();
}
template <class type>
void Queue<type>::add(const type &val)
{

QueueItem<type> *pt=new QueueItem<type>(val);
if (is_empty())
front =back=pt;
else
{
 back->next=pt;
 back=pt;
}
}
template <class type>
type Queue<type>::remove(){
if(is_empty())
{
 cerr<<"remove() on empty queue /n";
 exit(-1);
}
QueueItem<type>*pt=front;
front=front->next;
type retval=pt->Item;
delete pt;
return retval;
}
void main(){
 Queue<int> *p_qi =new Queue<int>;
 int ival;
 for(ival=0;ival<10;++ival)
  p_qi->add(ival);
 int err_cnt=0;
 for(ival=0;ival<10;++ival){
  int qval=p_qi->remove();
  if(ival!=qval) err_cnt++;
 }
if(!err_cnt)
cout<<"!!queue executed ok /n";
else
cerr<<"queue errors:"<<err_cnt<<endl;
}