알파벳순으로 정렬 된 이진 트리에 항목을 삽입하는 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;
...
}
}
나는 나무의 뿌리에 어떤 종류의 포인터를 선언해야한다고 생각하지만, 어디에 넣어야할지 모르겠습니다. 또한이 insert 함수를 호출하여 실제로 책을 삽입 할 위치를 찾는 별도의 "검색"함수를 작성해야하지만이 삽입 함수를 끝내기위한 도움을 찾고 있습니다.
각 노드가'parent' 포인터를 갖는 것은 정상입니다. –
왜 C++ 코드에서'malloc'을 사용하고 있습니까? 또한 왜 데이터를 '책'으로 읽는 중입니까? –
@MooingDuck 책으로 데이터를 읽는 것이 옳은 것인지 잘 모르겠습니다. 나는 책을 어떻게 초기화 할 지 모르겠습니다. 나는 신참이다 : -/ – aclark