VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 154|回复: 1

[已解决]队列储存对象的问题

[复制链接]
41_avatar_middle
最佳答案
0 
在线会员 发表于 2020-5-27 10:28:10 | 显示全部楼层 |阅读模式
11驿站币
  1. #include<iostream>
  2. using namespace std;
  3. template<class T>
  4. class LinearQueue
  5. {
  6. public:
  7.         LinearQueue(int LQMaxSize);
  8.         ~LinearQueue();
  9.         bool IsEmpty();
  10.         bool IsFull();
  11.         bool Insert(const T& x);
  12.         bool GetElement(T& x);
  13.         bool Delete(T& x);
  14.         void OutPut(ostream& out)const;
  15. private:
  16.         int size;
  17.         int MaxSize;
  18.         int front, rear;
  19.         T* element;
  20. };
  21. template<class T>
  22. LinearQueue<T>::LinearQueue(int LQMaxSize)
  23. {
  24.         MaxSize=LQMaxSize;
  25.         element=new T[MaxSize];
  26.         size=0;
  27.         front=0;
  28.         rear=0;
  29. }
  30. template<class T>
  31. LinearQueue<T>::~LinearQueue()
  32. {
  33.         delete []element;
  34. }
  35. template<class T>
  36. bool LinearQueue<T>::IsEmpty()
  37. {
  38.         return size==0;
  39. }
  40. template<class T>
  41. bool LinearQueue<T>::IsFull()
  42. {
  43.         return size==MaxSize;
  44. }
  45. template<class T>
  46. bool LinearQueue<T>::Insert(const T& x)
  47. {
  48.         if(IsFull())
  49.                 return false;
  50.         else
  51.         {
  52.                 element[rear]=x;
  53.                 rear=(rear+1)%(MaxSize);
  54.                 size++;
  55.                 return true;
  56.         }
  57. }
  58. template<class T>
  59. bool LinearQueue<T>::GetElement(T& x)
  60. {
  61.         if(IsEmpty())
  62.                 return false;
  63.         else
  64.         {
  65.                 x=element[front];
  66.                 return true;
  67.         }
  68. }
  69. template<class T>
  70. bool LinearQueue<T>::Delete(T& x)
  71. {
  72.         if(IsEmpty())
  73.                 return false;
  74.         else
  75.         {
  76.                 x=element[front];
  77.                 front=(front+1)%(MaxSize);
  78.                 size--;
  79.                 return true;
  80.         }
  81.        
  82. }
  83. template<class T>
  84. void LinearQueue<T>::OutPut(ostream& out)const
  85. {
  86.         int index;
  87.         index=front;
  88.         for(int i=0;i<size;i++)
  89.         {
  90.                 out<<element[index]<<endl;
  91.                 index=(index+1)%MaxSize;
  92.         }
  93. }
  94. template<class T>
  95. ostream& operator<<(ostream& out,const LinearQueue<T>& x)
  96. {
  97.         x.OutPut(out);
  98.         return out;
  99. }
复制代码

此处作为头文件我应该已经实现的队列,但是题目要求我手动建立3个文件让文件中储存5名学生的姓名、学号和成绩,读入内存后组内排序存入队列,每次在队列中各读取一人成绩相比较,最大的计分。这是怎么实现的呢?建立文件我也能够实现,但怎么每次在队列中读取一人进行比较呢?我实在是搞不太懂这里。麻烦各位帮我看一下!
最佳答案
57_avatar_small
2020-5-27 10:28:11
1.手动建立3个文件让文件中储存5名学生的姓名、学号和成绩。
此处理解为存在3个文件,每个文件内储存5名学生的姓名、学号、成绩

2.读入内存后,组内排序存入队列
分别将3个文件读取至内存,每个文件内信息为一组,共3组。
每组分别进行排序,未说明是根据姓名学号还是成绩进行排序,此处理解为根据成绩进行排序。
排序后3组信息分别存入队列,所以存在3个队列。

3.每次在队列中各读取一人成绩相比较,最大的计分。
存在3个已经进行排序的队列,每次分别从每个队列读取一个信息进行比较,较大的那一组获得一分。

最佳答案

查看完整内容

1.手动建立3个文件让文件中储存5名学生的姓名、学号和成绩。 此处理解为存在3个文件,每个文件内储存5名学生的姓名、学号、成绩 2.读入内存后,组内排序存入队列 分别将3个文件读取至内存,每个文件内信息为一组,共3组。 每组分别进行排序,未说明是根据姓名学号还是成绩进行排序,此处理解为根据成绩进行排序。 排序后3组信息分别存入队列,所以存在3个队列。 3.每次在队列中各读取一人成绩相比较,最大的计分。 存在 ...




上一篇:线程中while加入sleepCPU使用率
下一篇:Google 管理员
57_avatar_middle
最佳答案
21 
在线会员 发表于 2020-5-27 10:28:11 | 显示全部楼层    本楼为最佳答案   
bestAnswer
1.手动建立3个文件让文件中储存5名学生的姓名、学号和成绩。
此处理解为存在3个文件,每个文件内储存5名学生的姓名、学号、成绩

2.读入内存后,组内排序存入队列
分别将3个文件读取至内存,每个文件内信息为一组,共3组。
每组分别进行排序,未说明是根据姓名学号还是成绩进行排序,此处理解为根据成绩进行排序。
排序后3组信息分别存入队列,所以存在3个队列。

3.每次在队列中各读取一人成绩相比较,最大的计分。
存在3个已经进行排序的队列,每次分别从每个队列读取一个信息进行比较,较大的那一组获得一分。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-7-14 15:49

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表