Cola (método estático)

Una cola es una estructura de datos que solo permite insertar elementos al final de la cola y al principio de la cola. Como la cola en nuestras vidas. Lo más importante en la cola es juzgar si el equipo está vacío o lleno. La cola se implementa de forma estática, utilizando una matriz para configurar una cola circular. el código se muestra a continuación:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 10
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

/*
判断队列空满: 
方案一:代码(浪费一个存储空间,用来判断队满和队空) 
方案二:增加一个变量表示队列长度(初始化为0),每增加一个元素长度加一,每删除一个元素
减一。最后长度为MaxSize的队满,长度为0的队空(不浪费) 
方案三:增加一个判断型变量表示最近一次插入(0)或者删除的操作 (1),每次增加元素都使
变量置为0,删除元素都使变量置为1。这样结合队头和队尾指针指向同一个地方就可以判断(不浪费) 
*/

//静态方式定义队列
typedef struct {
    int data[MaxSize];//用静态数组存放元素 
    int front,rear;//队头指针和队尾指针 
}SqQueue; 

//静态方式初始化队列(队头队尾都指向0) 
void InitQueue(SqQueue &Q){
    Q.front = 0;
    Q.rear = 0;
}

//静态方式判断是否为空队列 
bool isEmpty(SqQueue Q){
    if(Q.front==Q.rear){
        return true;
    }else{
        return false;
    }
}

//静态方式入队
bool EnQueue(SqQueue &Q,int x){
    if((Q.rear+1)%MaxSize==Q.front){//队满报错 
        return false;
    }
    Q.data[Q.rear] = x;
    Q.rear = (Q.rear+1)%MaxSize;//队尾+1取模(形成循环结构队列) 
    return true;
} 

//静态方式入队
bool DeQueue(SqQueue &Q,int &x){
    if(Q.front==Q.rear){//队空报错 
        return false;
    }
    x = Q.data[Q.rear];
    Q.front = (Q.front+1)%MaxSize;//队头+1取模(形成循环结构队列) 
    return true;
}

//静态方式获得队头元素
bool GetQueue(SqQueue &Q,int &x){
    if(Q.front==Q.rear){//队空报错 
        return false;
    }
    x = Q.data[Q.rear]; 
    return true;
}

//队列元素个数计算((rear+MaxSize-front)%MaxSize) 

int main(int argc, char** argv) {
    SqQueue Q;
    InitQueue(Q);
    return 0;
}

Supongo que te gusta

Origin blog.51cto.com/14049943/2592872
Recomendado
Clasificación