вот реализация очереди, которая дает мне очень неясную ошибку
#include<iostream>
#include "bool.h"
#include "item.h"
#include "queue.h"
using namespace std;
void init_queue(queue *q){
q->first=0;
q->last=queuesize-1;
q->count=0;
}
void enqueue (queue *q,item_type x){
if(q->count>=queuesize)
cout<<" queue everflow occurs during enqueue "<<endl;
else
{
q->last=(q->last+1)%queuesize;
q->m[q->last]=x;
q->count=q->count+1;
}
}
int dequeue (queue *q)
{
item_type x;
if(q->count<=0) cout<<"empthy queue "<<endl;
else
{
x=q->m[q->first];
q->first=(q->first+1)%queuesize;
q->count=q->count-1;
}
return (x);
}
item_type headq(queue *q)
{
return(q->m[q->first]);
}
int empthy(queue *q){
if (q->count<=0) return (TRUE);
else return (FALSE);
}
void print_queue(queue *q){
int i;
i=q->first;
while(i!=q->last)
{
cout<<q->m[i];
i=(i+1)%queuesize;
}
cout<<q->m[i]<<" ";
}
int main(){
queue *q;
init_queue(q);
int a;
while(cin>>a){
enqueue(q,a);
}
print_queue(q);
return 0;
}
см. Также, пожалуйста, файл заголовка очереди
#define queuesize 1000
#include "item.h"
typedef struct
{
int m[queuesize+1];
int first;
int last;
int count;
}queue;
ошибка в том, что (на самом деле) это не ошибка, а предупреждениея компилирую, но когда я запускаю, он говорит, что локальная переменная q неинициализирована, поэтому какая переменная q - это имя структуры, поэтому, когда я запускаю метод init_queue, он должен инициализировать yes?