2013-05-02 5 views
0

Это для домашнего заданияBinarySearchTree лодка Устав делопроизводство

Для этого задания, что я должен сделать, я должен создать журнал для ведения записей круизного лайнера в течение месяца (представленный номера 1- 31). Существует 1 круиз в день, который вмещает до 6 человек. Если количество людей, пытающихся забронировать в определенный день, проходит 6, то они будут добавлены в очередь. Текущий список пассажиров должен находиться в BinarySearchTree. В основном мы должны читать данные предоставленного файла о человеческом объекте и вставлять их в дерево, соответствующее тому, что они выбрали. (Файл предоставит информацию в следующем порядке: (transactionCode day lastName firstName)) Где код транзакции представляет собой предпринятое действие (Добавить пассажир, Удалить (удаляет пассажира из дерева и добавляет следующего пассажира из очереди), Печать (печать текущих BST и списка ожидающих день), Отправление (окончательный список окончаний печати и очередь дня).

Вопрос, который я задаю, касается метода создания BST и очереди, которая представляет каждый день в одном методе и добавляет к эти BST.Я пустую в методе, чтобы выполнить это.Я уже создал класс объекта человека, класс BST и класс очереди.Я могу создать метод Add в моем классе пассажиров, но как бы я проверить, чтобы увидеть если дерево уже существует в течение определенного дня и добавляется к этому дереву вместо создания нового?

Я в затруднении, если вам нужно увидеть какие-либо классы, оставьте комментарий. Заранее спасибо.

ответ

0

Если я понимаю, что вы говорите, вот что, я думаю, вам следует делать.

  • Имейте массив узлов, каждый из которых представляет день.
  • Сделайте узлы удержанием буквы x, поэтому необходимо, чтобы они были пустыми.
  • Имейте корневые узлы, указывающие влево и вправо, пока в каждом дереве не будет шесть узлов.
  • Также создайте еще один массив, каждый из которых представляет день.
  • Заполните каждый узел x, чтобы показать, что он не занят.
  • Теперь, когда вы хотите заказать пассажира, пойти в день, перейдя в это индекс в массиве бинарных деревьев
  • Если есть в нем x, что означает, что это бесплатно, поэтому хранить имя пассажира
  • Если в нем есть еще один, проверьте левый и правый узлы, пока все шесть не будут проверены.
  • Если все шесть заполнены, перейдите к массиву узлов Queue, перейдите к индексу дня, если это x, замените его с именем пассажира
  • Если это не x И коренной указатель не равен NULL, скажем root->next = new Node (passenger's name);
  • Если коренной указатель имеет значение NULL, вам нужно перейти к последнему человеку в очереди, а затем добавить нового человека.
  • Если пассажир удален в течение дня, перейдите к индексу в очереди, добавьте корневой узел в двоичное дерево
  • Затем удалите это имя в корневом узле, замените его следующей строкой ... пока не будет больше в очереди.

Надеюсь, это поможет. :)

Смежные вопросы