注册 登录
编程论坛 数据结构与算法

一个C++队列程序,麻烦帮看下

lly10120303 发布于 2011-05-09 23:03, 809 次点击
这是个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 时结果不对,为什么啊?
4 回复
#2
诸葛修勤2011-05-09 23:09
结果要什么样子的  就 你输入的那些
#3
诸葛修勤2011-05-09 23:35
程序代码:
//main.cpp
    for(j=0;j<20;j++)//向文件输入数据
    {
        cin>>x;
        ofile<<x << ' ';
    }
记得在后面加上空格
不然 读文件的时候 就看做一个整数给你 读进来啦  

只有本站会员才能查看附件,请 登录
#4
诸葛修勤2011-05-09 23:37
只有本站会员才能查看附件,请 登录
没加空格时的

#5
lly101203032011-05-10 22:29
谢谢你!!!
1