zoukankan      html  css  js  c++  java
  • 24 顺序队列(循环队列)

    //循环队列
    #include<stdio.h>
    #include<stdlib.h>
    #define Capacity 6
    
    typedef struct Queue {
    	int data[Capacity];
    	int front; //队头指针
    	int rear; //队尾指针
    }queue;
    
    
    queue initQueue(queue Q) {
    	for (int i = 0; i < Capacity; i++) {
    		Q.data[i] = -1;
    	}
    	return Q;
    }
    
    //入队列
    queue push(queue Q, int elem) {
    	if ((Q.rear+1)%Capacity==Q.front) { //循环队列判 满 的条件
    		printf("队列满了
    ");
    		return;
    	}
    	Q.data[Q.rear] = elem;
    	//Q.rear++;
    	Q.rear = (Q.rear + 1) % Capacity;
    	return Q;
    }
    
    //出队列
    queue pop(queue Q) {
    	if (Q.front == Q.rear) { //循环队列判 空 的条件
    		printf("队列空了:
    ");
    		return;
    	}
    	printf("出队列元素是:%d
    ", Q.data[Q.front]);
    	//Q.front++;
    	Q.front = (Q.front + 1) % Capacity;
    	return Q;
    }
    
    void showQueue(queue Q) {
    	for (int i = Q.front; i < Capacity; i++) {
    		printf("%d  ", Q.data[i]);
    	}
    	printf("
    ");
    }
    
    
    void main() {
    	struct Queue myqueue;
    	myqueue.front = myqueue.rear = 0;
    	myqueue = initQueue(myqueue);
    
    	printf("初始化队列是:
    ");
    	showQueue(myqueue);
    	printf("队头指针是:%d
    ", myqueue.front);
    	printf("队尾指针是:%d
    ", myqueue.rear);
    
    	printf("将10,20,30,40,50入队列后:
    ");
    	myqueue = push(myqueue, 10);
    	myqueue = push(myqueue, 20);
    	myqueue = push(myqueue, 30);
    	myqueue = push(myqueue, 40);
    	myqueue = push(myqueue, 50);
    	showQueue(myqueue);
    	printf("队头指针是:%d
    ", myqueue.front);
    	printf("队尾指针是:%d
    ", myqueue.rear);
    
    	printf("队头元素出队列后:
    ");
    	myqueue = pop(myqueue);
    	showQueue(myqueue);
    	printf("队头指针是:%d
    ", myqueue.front);
    	printf("队尾指针是:%d
    ", myqueue.rear);
    
    	printf("将100入队列:
    ");
    	myqueue = push(myqueue, 100);
    	showQueue(myqueue);
    	printf("队头指针是:%d
    ", myqueue.front);
    	printf("队尾指针是:%d
    ", myqueue.rear);
    }
    

    循环队列 入队 : rear = (rear + 1)% M ; 

    循环队列 出队 :front = ( front + 1 ) % M ;

    循环队列 判空:Q.front == Q.rear

    循环队列 判 满:(Q.rear + 1 ) % M == Q.front ; 

    循环队列求长度:( M + rear - front ) % M ;

  • 相关阅读:
    Sublime Text 命令大全(积累所得)
    端口号
    帝之意志 看透世间
    Session and Cookie的基础用法
    厌胜术
    微信支付
    微信登录
    navicat常用快捷键与SQL基本使用
    idea Spring项目一直报错,但是点击进去就恢复正常了,解决办法,通过mvn idea:module命令生成iml文件
    解决报错WARNING: IPv4 forwarding is disabled. Networking will not work.
  • 原文地址:https://www.cnblogs.com/shanlu0000/p/12595242.html
Copyright © 2011-2022 走看看