一个C++队列程序,麻烦帮看下
这是个queue.h文件const int maxsize=50;
class queue
{
private:
int front,rear,count;
DataType QList[maxsize];
public:
queue();
int GetLength()const;
int QueueEmpty()const;
int QueueFull()const;
DataType QueueFront()const;
void QueueInsert(const DataType &a);
DataType QueueDelete();
void Queueprint();
};
queue::queue():front(0),rear(0),count(0)
{}
int queue::GetLength()const//返回队列当前的长度
{
return count;
}
int queue::QueueEmpty()const//判断队列是否为空,为空返回1
{
if(count==0) return 1;
else return 0;
}
int queue::QueueFull()const//判断队列是否满了,满了为1
{
if(count==maxsize) return 1;
else return 0;
}
DataType queue::QueueFront()const//返回队列最前面得数据,不改变队列
{
if(QueueEmpty())
{
cerr<<"queue is empty"<<endl;
exit(1);
}
return QList[front];
}
void queue::QueueInsert(const DataType &a)//在队尾插入一个数据a
{
if(QueueFull())
{
cerr<<"queue is full"<<endl;
exit(1);
}
QList[rear]=a;
rear=(rear+1)%maxsize;
count++;
}
DataType queue::QueueDelete()//删除队首的数据,并且返回
{
if(QueueEmpty())
{
cerr<<"queue is empty"<<endl;
exit(1);
}
DataType temp;
temp=QList[front];
front=(front+1)%maxsize;
count--;
return temp;
}
void queue::Queueprint()//打印队列的数据每行8个
{
int i=0,j=count;
while(i<j)
{
cout<<QueueDelete()<<" ";
i++;
if(i%8==0) cout<<endl;
}
}
下面是主文件
#include<iostream.h>
#include<fstream>
#include<cstdlib>
#include<string>
typedef double DataType;
#include"queue.h"
using namespace std;
void main()
{
queue q;
DataType x;
int i=20,j;
ofstream ofile;//创建一个输出文件流对象
ofile.open("pq.txt");//打开文件
if(!ofile)
{
cerr<<"文件打不开"<<endl;
exit(1);
}
cout<<"请输入双精度数据20个"<<endl;
for(j=0;j<20;j++)//向文件输入数据
{
cin>>x;
ofile<<x;
}
ofile.close();//关闭文件
ofile.clear();//清楚文件状态值
ifstream ifile;//创建一个输入文件流对象
ifile.open("pq.txt");
if(!ifile)
{
cerr<<"文件打不开"<<endl;
exit(1);
}
while(ifile>>x)//输出数据并且放入队列中
{
q.QueueInsert(x);
}
q.Queueprint();//打印队列中数据每行8个数据
}
当我输入:1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 时结果不对,为什么啊?