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