2013-05-02 48 views
0

這是一個家庭作業BinarySearchTree船租賃記錄保存

對於這項任務,我必須做的,我要創建一個記錄保存日誌遊輪一個月(由數字1代表31)。每天有1次巡航,最多可容納6人。如果在某一天試圖預訂的人數超過6,那麼他們將被添加到隊列中。目前的乘客名單應該保存在BinarySearchTree中。基本上我們要從提供的文件中讀取關於人物對象的信息,並將它們插入與他們挑選的日子對應的樹中。 (該文件將按以下順序提供信息:(transactionCode day lastName firstName))其中事務代碼表示採取的操作(添加乘客,刪除(從樹中刪除乘客並從隊列中添加下一位乘客),打印(打印當前BST和等待天),出發(打印最終名單和排隊日期)

問題我問的是關於創建一個BST和一個隊列的方法,它代表每一天在一個單一的方法,並添加到我已經創建了一個人物對象類,一個BST類和一個隊列類,我可以在我的乘客類中創建一個Add方法,但是我將如何檢查如果一棵樹已經存在了一個特定的日子,並添加到該樹,而不是創建一個新的?

我很茫然,如果你需要看任何課程,請留下評論。先謝謝你。

回答

0

如果我明白你在說什麼,這是我認爲你應該做的。

  • 有一個節點數組,每個節點代表一天。
  • 使節點保持字母x,所以必須shoe住它們是空的。
  • 讓根節點左右指向,直到每棵樹中有六個節點。
  • 也做另一個數組,每一個代表一天。
  • 用一個x填充每個節點,以表明它沒有被佔用。
  • 現在,當您要預訂的乘客,請以當天前往它的指數二叉樹的數組中
  • 如果有一個在它x,這意味着它是免費的,所以存儲乘客的姓名
  • 如果還有另一個節點,檢查左右節點,直到檢查全部六個節點爲止
  • 如果所有六個節點都已填充,則轉到節點的隊列數組,如果它是x,則轉到當天的索引,替換它與乘客的名字
  • 如果它不是x並且根指針不爲NULL,說root->next = new Node (passenger's name);
  • 如果根指針爲NULL,則必須先到隊列中的最後一個人,然後添加新人。
  • 如果一天乘客被刪除,轉到隊列中的索引,將根節點添加到二叉樹中
  • 然後刪除根節點中的名稱,將其與下一行相交換...直到沒有更多的線。

我希望這有助於。 :)