zoukankan      html  css  js  c++  java
  • 23 顺序队列

    1,定义队列,并初始化队列(赋予一个队列10个元素,元素赋值为 -1 )

    //顺序队列,定义队列并初始化队列,将队列中的元素初始化为-1
    
    #include<stdio.h>
    #include<stdlib.h>
    #define Capacity 10
    
    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;
    }
    
    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);
    }
    

    2,入队列,从队尾进入一个元素

    //入队列,从队尾进入一个元素
    
    #include<stdio.h>
    #include<stdlib.h>
    #define Capacity 10
    
    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) {
    	Q.data[Q.rear] = elem;
    	Q.rear++;
    	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入队列后:
    ");
    	myqueue = push(myqueue, 10);
    	showQueue(myqueue);
    	printf("队头指针是:%d
    ", myqueue.front);
    	printf("队尾指针是:%d
    ", myqueue.rear);
    
    }
    

     3,出队列

    //出队列
    #include<stdio.h>
    #include<stdlib.h>
    #define Capacity 10
    
    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) {
    	Q.data[Q.rear] = elem;
    	Q.rear++;
    	return Q;
    }
    
    //出队列
    queue pop(queue Q) {
    	while (Q.front != Q.rear) {
    		printf("出队列元素是:%d
    ", Q.data[Q.front]);
    		Q.front++;
    	}
    	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);
    
    }

    4,假溢出

    //假溢出
    #include<stdio.h>
    #include<stdlib.h>
    #define Capacity 5
    
    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 == Capacity) { //顺序队列判 满 的条件
    		printf("队列满了
    ");
    		return;
    	}
    	Q.data[Q.rear] = elem;
    	Q.rear++;
    	return Q;
    }
    
    //出队列
    queue pop(queue Q) {
    	printf("出队列元素是:%d
    ", Q.data[Q.front]);
    	Q.front++;
    	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);
    }

    假溢出:Q.front ≠ 0 , Q.rear == Capacity ; 

    顺序队列 判空: Q.front == Q.rear = 0 ; 

    顺序队列 判满: Q.front == Q.rear = Capacity; 

  • 相关阅读:
    对象的思考1
    第一个php网页
    php&mysql
    python —print
    实现窗口移动
    numpy学习(二)
    numpy学习(一)
    knn算法之预测数字
    机器学习(一)之KNN算法
    matplot绘图(五)
  • 原文地址:https://www.cnblogs.com/shanlu0000/p/12595106.html
Copyright © 2011-2022 走看看