Ich versuche, eine BST in eine verknüpfte Liste zu konvertieren, aber es wird ein Fehler beim Versuch, die Liste zum Drucken auf dem Display aufzurufen.Konvertieren der binären Suchstruktur in Linked List-Fehler
Hier ist mein Code für die wichtigsten Funktionen,
ListNodePtr createListnode(int key) {
ListNodePtr newList = (ListNodePtr)malloc(sizeof(struct ListNode));
if (newList != NULL) {
newList->key = key;
newList->next = NULL;
return newList;
} else {
return NULL;
}
}
ListNodePtr insertNodeIntoList(ListNodePtr root, const ListNodePtr z) {
if (root == NULL) {
root = createListnode(z->key);
} else {
root->next = insertNodeIntoList(root->next, z);
}
return root;
}
void linkedListINIT(ListNodePtr list, TreeNodePtr root) {
if (root != NULL) {
linkedListINIT(list, root->left);
ListNodePtr current = createListnode(root->key);
list = insertNodeIntoList(list, current);
linkedListINIT(list, root->right);
}
return;
}
ListNodePtr convertBSTtoLinkedList(TreeNodePtr root) {
ListNodePtr list = NULL;
linkedListINIT(list, root);
return list;
}
Hier wird die Initialisierung für die listNodePtr ist und die Druckfunktion.
struct ListNode {
int key;
struct ListNode *next;
};
typedef struct ListNode *ListNodePtr;
und
void printList(ListNodePtr head) {
if (head != NULL) {
printf("%d ", head->key);
printList(head->next);
}
return;
}
Das Problem ist, wenn ich versuche, die endgültige Liste zu drucken, gibt es keinen Ausgang, obwohl die ‚aktuellen‘ variable Ausgänge richtig, wenn ich es mit print-Anweisungen überprüfen. Ich bin nicht wirklich sicher, wo es schief geht, die Hauptfunktion ruft convertBSTtoLinkedList und printList auf. Jede Hilfe wäre willkommen!
Im Funktionsaufruf 'linkedListINIT (list, root)' kann die Funktion 'linkedListINIT()' die Variable 'list' nicht modifizieren. Es ist egal, was es tut; Es kann einfach * die als Argumente übergebenen Variablen nicht modifizieren, da die C-Sprache streng nach dem Wert ist. – AlexP