gpt4 book ai didi

c++ - 队列结构给出了奇怪的错误

转载 作者:太空宇宙 更新时间:2023-11-04 14:42:31 26 4
gpt4 key购买 nike

这里是队列实现,它给我非常不清楚的错误

#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 方法时它应该初始化是吗?

最佳答案

您必须实例化队列对象。

int main(){
queue *q = new queue;
init_queue(q);

使用 q 作为堆栈变量并传递地址。

int main(){
queue q;
init_queue(&q);

关于c++ - 队列结构给出了奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8134538/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com