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 始终指向队列的尾部

  • 相关阅读:
    济南空中课堂视频下载辅助脚本
    npm 修改仓库源
    Java后端实现登陆的方式
    java 新词汇
    数据库系统,设计、实现与管理(基础篇)阅读笔记
    java 面试01
    js rem 适配多端
    了解Java
    linux 查看内存使用情况
    linux 日志查看
  • 原文地址:https://www.cnblogs.com/hysz/p/7151235.html
Copyright © 2011-2022 走看看