アルファベット順にソートされたバイナリツリーに項目を挿入するC++関数を作成するのに問題があります。順序付きバイナリ検索ツリーに挿入
insert関数は次のように動作するはずです。ユーザーは番号を入力するよう求められます。この数字は、入力する書籍の数を示します。次に、書籍のタイトルとURL(構造体として定義されている)が入力され、タイトルがタイトルの最初の文字に基づいてアルファベット順にツリーに挿入されます。
私はタイトルとURLは文字の配列である。このような本は、定義されました:
struct bookNode {
char title[30];
char url[40];
char key;
bookNode *left;
bookNode *right;
} book;
をそして、これは私が挿入機能のために、これまで持っているものです。
void insertBook() {
struct bookNode *p, *q;
int i, n;
char key;
cout << "Enter the number of books you want to add" << endl;
cin >> n;
for(i=0;i<n;i++) {
p = (struct bookNode *)malloc(sizeof(struct bookNode));
if(p==0)
cout << "Out of Memory" << endl;
cout << "Enter the title of the book" << endl;
cin.getline(book.title, 30);
key = book.title[0];
cout << "Enter the url of the book" << endl;
cin.getline(book.url, 40);
p->key; //I'm not sure if these next 3 lines are right
p->left=0;
p->right=0;
...
}
}
私はツリーのルートにも何らかのポインタを宣言しなければならないかもしれないと思っていますが、どこに置くべきかわかりません。また、私はこの挿入機能で実際に挿入する場所を見つけるために別の "検索"機能を記述する必要があることを認識していますが、この挿入機能を終了するためのヘルプを探しています。
各ノードが '親 'ポインタを持つのは普通です。 –
C++コードで 'malloc'を使っているのはなぜですか?また、なぜデータを「本」に読み込んでいますか? –
@MooingDuck本にデータを読み込むことが正しいかどうか分かりません。私はどのようにして本を初期化するかわからない。私は初心者です: -/ – aclark