• 简单队列的改进——————循环队列


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

  • 相关阅读:
    hihocoder 1049 后序遍历
    hihocoder 1310 岛屿
    Leetcode 63. Unique Paths II
    Leetcode 62. Unique Paths
    Leetcode 70. Climbing Stairs
    poj 3544 Journey with Pigs
    Leetcode 338. Counting Bits
    Leetcode 136. Single Number
    Leetcode 342. Power of Four
    Leetcode 299. Bulls and Cows
  • 原文地址:https://www.cnblogs.com/hysz/p/7151235.html
Copyright © 2020-2023  润新知