• 数据结构 队列


    循环队列:

    入队,出队,取队顶元素

      1 #include<stdio.h>
      2 
      3 #define OK 1
      4 #define ERROR 0
      5 #define OVERFLOW -1
      6 #define MAXSIZE 100
      7 #define TRUE 1
      8 #define FALSE 0
      9 
     10 typedef int Status;
     11 typedef int ElemType;
     12 
     13 typedef struct{
     14     ElemType data[MAXSIZE];
     15     int front,rear;
     16 }SqQueue;//循环队列类型
     17 
     18 //函数定义
     19 Status EnQueue(SqQueue &Q,ElemType e)//入队
     20 {
     21     printf("请您实现入队操作!
    ");
     22 
     23     if((Q.rear+1)%MAXSIZE==Q.front)
     24         return ERROR;
     25     Q.data[Q.rear]=e;
     26     Q.rear=(Q.rear+1)%MAXSIZE;
     27 
     28     return OK;
     29 }
     30 
     31 Status DeQueue(SqQueue &Q,ElemType &e)//出队
     32 {
     33     printf("请您实现出队操作!
    ");
     34 
     35     if(Q.front==Q.rear)
     36         return ERROR;
     37     e=Q.data[Q.front];
     38     Q.front=(Q.front+1)%MAXSIZE;
     39 
     40     return OK;
     41 }
     42 
     43 Status GetFront(SqQueue Q,ElemType &e)//取队头元素到e
     44 {
     45     if(Q.rear==Q.front)
     46         return OVERFLOW;
     47     e=Q.data[Q.front];
     48     return OK;
     49 }
     50 void InitQueue(SqQueue &Q)//队列初始化
     51 {
     52     Q.rear=Q.front=0;
     53 }
     54 
     55 int QEmpty(SqQueue Q)//判队空
     56 {
     57     if(Q.front==Q.rear)
     58         return TRUE;
     59     else
     60         return FALSE;
     61 }
     62 
     63 int QFull(SqQueue Q)//判队满
     64 {
     65     return ((Q.rear+1)%MAXSIZE==Q.front);
     66 }
     67 
     68 void QTravels(SqQueue Q)//遍历队列,打印队列中所有元素
     69 {
     70     int i;
     71     if(Q.rear==Q.front)
     72         printf("
    队列为空!
    ");
     73     else
     74     {
     75         i=Q.front;
     76         while(i!=Q.rear)
     77         {
     78             printf("%d  ",Q.data[i]);
     79             i=(i+1)%MAXSIZE;
     80         }
     81     }
     82 }
     83 
     84 int QLength(SqQueue Q)
     85 {
     86     return (Q.rear+MAXSIZE-Q.front)%MAXSIZE;
     87 }
     88 
     89 void main()
     90 {
     91     int i;
     92     SqQueue Q1;
     93     InitQueue(Q1);
     94     for(i=0;i<5;i++)
     95     {
     96         if(EnQueue(Q1,i)==1)
     97             printf("%d入队成功!
    ",i);
     98     }
     99     printf("队列遍历结果:
    ");
    100     QTravels(Q1);
    101     int e;
    102     printf("
    队列长度是:%d
    ",QLength(Q1));
    103     printf("
    出队一次:
    ");
    104     DeQueue(Q1,e);
    105     printf("
    出队元素是:%d
    ",e);
    106     printf("
    队列长度是:%d
    ",QLength(Q1));
    107     printf("队列遍历结果:
    ");
    108     QTravels(Q1);
    109     putchar('
    ');
    110 }
  • 相关阅读:
    fastjson反序列化(win环境复现)
    Struts2 S2-059 远程代码执行漏洞
    4. redis未授权漏洞复现(主从复制)
    3. redis未授权漏洞复现(写入linux计划任务反弹shell)
    2. redis未授权漏洞复现(写入webshell)tomcat环境失败
    1. redis未授权漏洞复现(写入公钥利用)
    CVE-2020-1938漏洞复现(文件读取文件包含)
    buuctf-[网鼎杯 2018]Fakebook 1
    buucitf-[极客大挑战 2020]Roamphp1-Welcome
    buuctf-web-[极客大挑战 2019]BuyFlag 1
  • 原文地址:https://www.cnblogs.com/weiyuan/p/5970906.html
Copyright © 2020-2023  润新知