0

这是一个家庭作业

对于我必须完成的这项任务,我必须为一艘游轮创建一个月的记录保存日志(由数字 1-31 表示)。每天有 1 艘游轮,最多可容纳 6 人。如果某天尝试预订的人数超过 6,那么他们将被添加到队列中。当前乘客列表应该保存在 BinarySearchTree 中。基本上,我们将从提供的文件中读取有关人​​员对象的信息,并将它们插入到与他们选择的日期相对应的树中。(文件将按此顺序提供信息:(transactionCode day lastName firstName))其中事务代码表示采取的行动(添加乘客,删除(从树中删除乘客并从队列中添加下一个乘客),打印(打印当前 BST 和等待列表天),出发(打印当天的最终列表和队列)。

我要问的问题是关于创建一个 BST 和一个队列的方法,该队列在一个方法中代表每一天并添加到这些 BST。我在实现这一目标的方法上一片空白。我已经创建了一个人对象类、一个 BST 类和一个队列类。我可以在我的乘客类中创建一个 Add 方法,但是我将如何检查特定日期的树是否已经存在,并添加到该树而不是创建一个新树?

我很茫然,如果您需要查看任何课程,请发表评论。先感谢您。

4

1 回答 1

0

如果我明白你在说什么,这就是我认为你应该做的。

  • 有一组节点,每个节点代表一天。
  • 使节点保持字母x,因此必须确保它们是空的。
  • 让根节点指向左右,直到每棵树中有六个节点。
  • 同样,还制作另一个数组,每个数组代表一天。
  • 用a填充每个节点x以表明它没有被占用。
  • 现在,当您想预订一位乘客时,通过转到它在二叉树数组中的索引来前往当天
  • 如果里面有a x,那就意味着它是免费的,所以存储乘客的名字
  • 如果里面还有一个,检查左右节点,直到所有六个都检查完
  • 如果所有六个都填满了,则转到节点的队列数组,转到当天的索引,如果是 a x,则将其替换为乘客姓名
  • 如果它不是xAND 根指针不是 NULL,比如说root->next = new Node (passenger's name);
  • 如果根指针为 NULL,则必须转到队列中的最后一个人,然后添加新人。
  • 如果一个乘客被删除了一天,去队列中的索引,将根节点添加到二叉树中
  • 然后删除根节点中的名称,将其与下一个行交换...直到没有更多行。

我希望这有帮助。:)

于 2013-05-06T17:36:12.560 回答