【发布时间】:2011-11-15 10:04:15
【问题描述】:
这是队列实现,它给了我非常不清楚的错误
#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 方法时它应该初始化是吗?
【问题讨论】:
-
如果你在linux上,你可以使用valgrind获取详细信息。
标签: c++ data-structures queue