编写一个程序,实现链队的各种基本运算

完成如下功能:

(1)初始化链队q;

(2)判断链队q是否非空;

(3)依次进队元素a,b,c;

(4)出队一个元素,并输出该元素;

(5)输出链队q的元素个数;

(6)依次进链队元素d,e,f;

(7)输出链队q的元素个数;

(8)输出出队序列;

(9)释放链队;



代码:

#include"iostream"
using namespace std;
class queue{
private:
queue* next;
char data;
    queue * front;
queue * rear;
static int count;
public:
void initqueue(queue *&q)
{
q=new queue;
q->front=q->rear=NULL;
}
void destroyqueue(queue *&);
    bool queueempty(queue *);
static void enqueue(queue *&,char);
static bool dequeue(queue *&);
static bool outqueue(queue *);
static int getcount(){ return count; }
};




int queue::count=0;




void queue::destroyqueue(queue *&q)
{
queue* p=q->front,*r;
if(p!=NULL)
{
r=p->next;
while(r!=NULL)
{
free(p);
p=r;
r=p->next;
}
}
free(p);
}


bool queue::queueempty(queue *q)
{
return(q->rear==NULL);
}


void queue::enqueue(queue *&q,char e)
{
queue *p;
p=new queue;
p->data=e;
p->next=NULL;
if(q->rear==NULL)
{
q->front=q->rear=p;
}
else
{
q->rear->next=p;
q->rear=p;
}
count++;
}




bool queue::dequeue(queue *&q)
{
queue *t;
if(q->rear==NULL)
return false;
t=q->front;
if(q->front==q->rear)
q->front=q->rear=NULL;
else
q->front=q->front->next;
cout << t->data << endl;
count--;
free(t);
return true;
}


bool queue::outqueue(queue *q)
{
queue *t;
t=q->front;
if(q->rear==NULL)
return false;
else
{
while(t->next!=NULL)
{
cout << t->data << "  ";
t=t->next;
}
}
cout << endl;
return true;
}


void main()
{
queue *q;
q->initqueue(q);
cout << q->queueempty(q) << endl;
q->enqueue(q,'a');
q->enqueue(q,'b');
q->enqueue(q,'c');
q->dequeue(q);
cout << q->getcount() << endl;
q->enqueue(q,'d');
q->enqueue(q,'e');
q->enqueue(q,'f');
cout << q->getcount() << endl;
q->outqueue(q);
q->destroyqueue(q);


}


你可能感兴趣的:(数据结构)