C++写的一个链式队列类

来源:百度文库 编辑:神马文学网 时间:2024/03/29 19:19:18
C++写的一个链式队列类

                                   

VC++6.0中调式通过的代码:

#include "stdafx.h"
#include
#include
using namespace std;

typedef char* ELEM;
class Link
{
public:
 ELEM element;
 Link* next;
 Link(const ELEM& elemval,Link* nextp=NULL)
 {element=elemval;next=nextp;}
 Link(Link* nextp=NULL)
 {next=nextp;}
 ~Link(){}
};
class Queue
{
private:
 Link* front;
 Link* rear;
public:
 Queue(const int sz)
 {front=rear=NULL;}
 ~Queue(){clear();}
 void clear();
 void enqueue(const ELEM&);
 ELEM dequeue();
 ELEM firstValue() const
 {assert(!isEmpty());return front->element;}
 bool isEmpty() const
 {return front==NULL;}

};
void Queue::clear()
{
 while(front!=NULL)
 {rear=front;front=front->next ;delete rear;}
}
void Queue::enqueue(const ELEM& item)
{
 if(rear!=NULL)
 {
 rear->next=new Link(item,NULL);
 rear=rear->next ;
 }
 else front=rear=new Link(item,NULL);
}
ELEM Queue::dequeue()
{
 assert(!isEmpty());
 ELEM temp=front->element;
 Link* ltemp=front;
 front=front->next;
 delete ltemp;
 if(front==NULL) rear=NULL;
 return temp;
}

int main()
{
 Queue qu(5);
 ELEM ee[5];
 ee[0]="QQLove1";
 ee[1]="QQLove2";
 ee[2]="QQLove3";
 ee[3]="QQLove4";
 ee[4]="QQLove5";
 for(int i=0;i<5;i++)
 {
  cout<<"入队"<  qu.enqueue (ee[i]);
 }
 for(i=0;i<5;i++)
  cout<<"出队"<

return 0;
}