zoukankan      html  css  js  c++  java
  • 简单队列的改进——————循环队列

    16:28:59 1 front=near=0; 
     2 
     3 //在入队列时,应该先判断是否满队列
     4 //即下一个元素的地址和队列前端front是否相等 
     5 void addcq(int front,int *rear, element item )
     6 {
     7     *rear=(*rear+1)%MAX_QUEUE_SIZE;
     8     if(*rear==front){
     9         printf("队列满"); 
    10     }
    11     queue[*rear]=item;
    12  } 
    13  //因为front指向的是队头的前一个位置
    14  //如:queue[0front 12345 6near]        其中123456存储着数据 
    15  //出队列时,应该先判断front==rear
    16  //然后在加1 
    17  element deleteq(int *front ,int near)
    18  {
    19      
    20      if(*front==rear){
    21          printf("队列空");
    22      }
    23      *front=(*front+1)%MAX_QUEUE_SIZE;
    24      return queue[*front];
    25   } 
    26  

    用一维数组模拟成圆形数组

    1.

    最多只能存储MAX_QUEUE_SIZE --1 个元素

    因为当存储MAX_QUEUE_SIZE时  front 也等于rear  ,这样就不知道是队列空还是队列满啦

    2.

    即当队列尾rear 指针走到队列最大值时,若front != near 则rear置为0..(通过对最大值取余进行转换)

    这种队列 rear 和front被初始化为0 而不是-1;

    front 始终指向队列头部的前一个位置,而rear 始终指向队列的尾部

  • 相关阅读:
    前端生成pdf文件之pdfmake.js
    vim 安装
    linux基础学习
    python 编码处理
    Ubuntu 下配置 SSH服务全过程及问题解决
    yum 安装
    Ubuntu安装MySQL
    Linux各发行版本及其软件包管理方法
    轻松学习LINUX系列教程推出
    常用命令
  • 原文地址:https://www.cnblogs.com/hysz/p/7151235.html
Copyright © 2011-2022 走看看