2 jk851617453 JK851617453 于 2017.08.28 22:24 提问

一点关于自己大学C++课设上的小小的疑问 30C

_题目如下:小明开了个养猪场,一共有100个猪圈(按照0-99编号),每个猪圈最多养10头猪(按照0到9编号),猪一共有三个品种:黑猪、小花猪和大花白猪,其中黑猪不能与其他两种猪放在一个猪圈里,会打架。规定每3个月,养猪场要出圈一批猪,包括:体重超过150斤的和饲养超过1年的;同时补充一批猪崽儿(猪的品种、数量录入或者选择随机生成)。试利用随机数方法构造猪崽儿的初始体重等信息(20-50kg),利用随机数方法按照秒或次数刷新每头猪随时间的体重增长函数(一秒/一次表示一天,一天增重0.0 ~1.2kg)。试利用结构体链表形式管理猪圈的猪,为新进的猪自动分配猪圈(要求猪均匀分布在各个猪圈中),自动统计本次出圈的猪的总体售价(黑猪15元一斤,小花猪7元一斤,大花白猪6元一斤评)
(1)可任意查询当前某一猪圈的猪的数量和种类;
(2)可任意查询当前某一猪圈某头猪的状态信息;
(3)可任意统计当前猪场每个品种猪的数量和体重、饲养时间分布情况;
(4)可任意查询近5年猪的销售记录和猪崽儿的购入记录(记录用文件形式存储);
(5)所有当前猪的信息使用文件形式保存,程序再启动时,自动读取养猪场信息并显示_

我看题目,一开始想的是创建一个结构体二维数组
但发现题目要求链表操作,链表这一张章学的比较烂,很少会想到它,我初步想的是二维链表 图片说明
如图,1、那这样怎样进行接下来的查找工作呢,或者换一种结构?2、结构体二维数组会不会更好?3、随时间的随机增长函数怎样操作? 分不多,但麻烦大家了^^

3个回答

what951006
what951006   Rxr 2017.08.29 09:35

1,查找就是遍历你的二维数组。即调用next..你懂了吗?
其它问题均在你的另一个问题已帮你回答

alisonyu
alisonyu   2017.09.01 15:58

1、猪圈之间可以用链表来连接,考虑到猪圈数量不多,可以直接遍历来寻找,每一猪圈节点存储猪圈相关信息。
2、按目前题主的架构,要寻找某只猪只能遍历每个节点进行比较,时间复杂度为O(n)
2、建议 猪圈与猪之间可以用二叉树(二叉树也是链表实现的,因此符合题意),为每一只猪分配一个Id,利用二叉树进行增删查改,时间复杂度为O(log2(n)) (直观来说1024头猪寻找一头猪最多只需要10次比较)。

qq_40061838
qq_40061838   2017.09.10 19:16

同年级的,我做完了,也是用的链表
我用的是一维链表,分别建立了活猪,卖出猪和死猪的链表。猪圈信息存储在猪的节点里

qq_40061838
qq_40061838 要源码的可以@我
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片