这是家庭作业
对于我必须完成的任务,我必须为一艘游轮创建一个月的记录保存日志(用数字1-31表示)。每天有一艘游轮,最多可容纳6人。如果某一天试图预订的人数超过6人,那么他们将被添加到队列中。当前的乘客列表应该保存在BinarySearchTree中。基本上,我们要从提供的文件中读取关于一个人对象的信息,并将它们插入到与他们选择的日期相对应的树中。(文件将按此顺序提供信息:(transactionCode day lastName firstName))其中交易代码表示所采取的操作(添加乘客,删除(从树中删除乘客并从队列中添加下一名乘客),打印(打印当前BST和当天的等待列表),出发(打印最终列表和当天的队列)。
我要问的问题是关于创建一个BST和一个队列的方法,该方法在单个方法中代表每一天,并添加到这些BST。我要在一个方法来完成这个空白。我已经创建了一个person对象类、一个BST类和一个队列类。我可以在我的乘客类中创建一个Add方法,但是我如何检查特定日期的树是否已经存在,并添加到该树中,而不是创建一个新树呢?
我很茫然,如果你需要看任何类,留下评论。
如果我明白你在说什么,我认为你应该这样做。
- 有一个节点数组,每个节点代表一天。
- 使节点保持字母
x
,因此必须确保它们是空的。 - 让根节点向左和向右,直到每棵树有6个节点。
- 我们还创建了另一个数组,同样,每个数组代表一天。
- 用
x
填充每个节点,表示该节点未被占用。 - 现在,当你想预订乘客时,通过在二叉树数组中找到它的索引来查找日期
- 如果里面有
x
,那就意味着它是免费的,所以存储乘客的名字 - 如果其中有另一个,检查左节点和右节点,直到所有六个节点都被选中
- 如果所有6个都已填满,则转到节点的队列数组,转到当天的索引,如果是
x
,则将其替换为乘客的姓名 - 如果它不是一个
x
和根指针不是NULL,说root->next = new Node (passenger's name);
- 如果根指针是NULL,你将不得不去队列中的最后一个人,然后添加新的人。
- 如果某旅客被删除一天,则到队列索引,将根节点添加到二叉树
- 然后删除根节点中的名称,将其与下一行交换…直到没有人排队。
我希望这对你有帮助。:)