zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    GTK+ 3.6.2 发布,小的 bug 修复版本
    RunJS 新增 Echo Ajax 测试功能
    Mozilla 发布 Popcorn Maker,在线创作视频
    Sina微博OAuth2框架解密
    Mina状态机State Machine
    Mozilla 发布 Shumway —— 纯JS的SWF解析器
    Code Browser 4.5 发布,代码浏览器
    ROSA 2012 "Enterprise Linux Server" 发布
    ltrace 0.7.0 发布,程序调试工具
    Artifactory 2.6.5 发布,Maven 扩展工具
  • 原文地址:https://www.cnblogs.com/xxdfly/p/4384002.html
Copyright © 2011-2022 走看看