У меня возникла проблема с созданием функции C++, которая будет вставлять элемент в двоичное дерево, которое сортируется по алфавиту.Вставка в упорядоченное двоичное дерево поиска
Функция вставки должна работать следующим образом: пользователю предлагается ввести номер. Этот номер будет указывать, сколько книг нужно ввести. Затем вводятся название и 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;
...
}
}
Я думаю, что мне, возможно, придется объявить какой-то указатель на корень дерева, но я не уверен, куда его поместить. И я также понимаю, что мне нужно будет написать отдельную функцию «поиска», которую я вызову в этой функции вставки, чтобы найти, где фактически вставить книгу, но я просто ищу помощь для завершения этой функции вставки.
Для каждого узла нормально указывать указатель «parent». –
Почему вы используете 'malloc' в коде на C++? Кроме того, почему вы читаете данные в 'book'? –
@MooingDuck Я не уверен, что чтение данных в книгу даже правильное. Я просто не знаю, как еще инициализировать книгу. Я новичок: -/ – aclark