循环队列的链表实现

来源:互联网 发布:淘宝低于5元不计销量 编辑:程序博客网 时间:2024/05/21 10:09

// 循环队列(链表实现).cpp :定义控制台应用程序的入口点。

//

 

#include "stdafx.h"

#include

using namespace std;

 

struct d_Queue

{

   d_Queue*next,*prior;

   intdata;

};

 

d_Queue *initQueue()//初始化队列

{

   d_Queue * q =new d_Queue;

   q->prior =q->next = q;//为空时头结点的priornext都指向头结点

   returnq;

}

 

void enQueue(d_Queue * q,intdata)//入队

{

   d_Queue *s =new d_Queue;

   s->data =data;

  q->prior->next = s;//尾结点next指针指向s

   s->prior=  q->prior;//s结点的prior指针指向之前尾结点

   s->next =q;//snext指针指向指向头结点

   q->prior =s;//头结点的prior指针指向s

}

 

void deQueue(d_Queue *q)//出队

{

  if(q->prior == q)

   {

     cout<<"队列为空,出队失败!"<<endl;

     return;

   }

   d_Queue *s =new d_Queue;

   s =q->next;//这里的程序采用头指针指向头结点的方式,所以这里s表示队头

  cout<<s->data<<"出队"<<endl;

   q->next =s->next;//头结点next指向队头的next指针

  s->next->prior = q;//队头的next指针的prior指针指向头结点

  free(s);//释放队头指针

}

 

int _tmain(int argc, _TCHAR* argv[])

{

  

   d_Queue *q =initQueue();

  enQueue(q,1);

  enQueue(q,2);

  deQueue(q);

  //cout<<q<<endl;

  enQueue(q,3);

  deQueue(q);

  deQueue(q);

  enQueue(q,4);

  deQueue(q);

   return0;

}

 

原创粉丝点击