простые операции с очередями (я получил 2 ошибки) - PullRequest
0 голосов
/ 17 марта 2020

Поэтому мне нужно реализовать (stati c реализация) некоторую операцию с очередями. Я написал функцию для каждой операции.

#include <iostream>
#include "header.h"
using namespace std;

void initQueue(Queue& Q)
{
    Q.head = Q.tail = 0;
}

void put(Queue& Q, Atom a) //enqueue function
{
    if (Q.tail >= DIMMAX)
    {
        cout << "The queue is full" << endl;
        return;
    }
    Q.vect[Q.tail] = a;
    Q.tail++;
}

Atom get(Queue& Q) //dequeue function
{
    if (isEmpty(Q))
    {
        cout << "The queue is empty" << endl;
        Atom a;
        return a;
    }
    Atom x = Q.vect[Q.head];
    Q.head++;
    return x;
}

Atom front(Queue& Q)
{
    if (isEmpty(Q))
    {
        cout << "The queue is empty" << endl;
        Atom a;
        return a;
    }
    return Q.vect[Q.head];
}

int isEmpty(Queue& Q)
{
    return (Q.head == Q.tail);
}

Я получил 2 ошибки впереди и получил функцию "неинициализированная локальная переменная" 'a' used "Как это исправить и что я делаю неправильно?

Заголовок:

#ifndef HEADER_H_
#define HEADER_H_

#define DIMMAX 8
typedef int Atom;
struct Queue {
    int head, tail;
    Atom vect[DIMMAX];
};
void initQueue(Queue& Q);
void put(Queue& Q, Atom a);
Atom get(Queue& Q);
Atom front(Queue& Q); 
int isEmpty(Queue& Q);

#endif

Это заголовок с функциями.

...