C++链式队列基本操作

  1 #include <iostream>
  2 #define QUEUEELEMENTTYPE int
  3 using namespace std;
  4 
  5 /*结点*/
  6 typedef struct Node
  7 {
  8     QUEUEELEMENTTYPE data; /*数据域*/
  9     Node * next; /*指针域*/
 10 }LinkQueueNode;
 11 
 12 /*队列*/
 13 struct LinkQueue
 14 {
 15     LinkQueueNode * front; /*头指针*/
 16     LinkQueueNode * rear;  /*尾指针*/
 17 };
 18 
 19 /*将Q初始化为一个空的链队列*/
 20 int InitQueue(LinkQueue * Q)
 21 {
 22     Q->front=(LinkQueueNode * )malloc(sizeof(LinkQueueNode));
 23     if(Q->front!=0)
 24     {
 25         Q->rear = Q->front;
 26         Q->front->next=0;
 27         return true;
 28     }
 29     else
 30         return false;
 31 }
 32 
 33 /*判断队列Q是否为空*/
 34 int IsEmpty(LinkQueue * Q)
 35 {
 36     if(Q->front==Q->rear)
 37         return true;
 38     return false;
 39 }
 40 
 41 /*将数据元素x插入到队列中去*/
 42 int EnterQueue(LinkQueue * Q , QUEUEELEMENTTYPE x)
 43 {
 44     Node * temp = (Node * )malloc(sizeof(Node));
 45     temp->next = 0;
 46     temp->data = x;
 47     Q->rear->next = temp; 
 48     Q->rear = temp;
 49     return true;
 50 }
 51 
 52 /*将队列Q的队头元素出队,并存到x所指的存储空间中*/
 53 int DeleteQueue(LinkQueue * Q , QUEUEELEMENTTYPE &x)
 54 {
 55     if(Q->rear!=Q->front)
 56     {
 57         x = Q->front->next->data;
 58         Q->front=Q->front->next;
 59         return true;
 60     }
 61     return false;
 62 }
 63 
 64 /*获取队头的元素,并存到x所指的存储空间中*/
 65 int GetHead(LinkQueue * Q , QUEUEELEMENTTYPE &x)
 66 {
 67     if(Q->rear==Q->front)
 68         return false;
 69     else
 70         x = Q->front->next->data;
 71     return true;
 72 }
 73 
 74 /*将队列Q置为空*/
 75 void ClearQueue(LinkQueue * Q)
 76 {
 77     Q->front=Q->rear;
 78     Q->front->next=0;
 79 }
 80 
 81 int main()
 82 {
 83     LinkQueue * queue=new LinkQueue;
 84     InitQueue(queue);
 85     cout << IsEmpty(queue) << endl;
 86     for(int i=0;i<1;i++)
 87         EnterQueue(queue,i);
 88     cout << IsEmpty(queue) << endl;
 89     int x = -1;
 90     DeleteQueue(queue,x);
 91     cout << "x = " << x << endl;
 92     DeleteQueue(queue,x);
 93     int y = -1;
 94     GetHead(queue,x);
 95     cout << "y = " << y << endl;
 96     cout << IsEmpty(queue) << endl;
 97     ClearQueue(queue);
 98     cout << IsEmpty(queue) << endl;
 99     return 0;
100 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。