bstをリンクリストに変換しようとしていますが、リストを呼び出してディスプレイに表示しようとするとエラーが発生します。ここでバイナリ検索ツリーをリンクリストに変換するエラー
は、主な機能のために私のコードで、ここで
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;
}
はlistNodePtrと印刷機能の初期化です。
struct ListNode {
int key;
struct ListNode *next;
};
typedef struct ListNode *ListNodePtr;
と
void printList(ListNodePtr head) {
if (head != NULL) {
printf("%d ", head->key);
printList(head->next);
}
return;
}
問題は、私は最終的なリストを印刷しようとすると、私はprint文でそれを確認した場合、何も出力が正常であっても「現在の」変数出力かかわらありません、です。私は本当に間違ってどこに行くのか分からない、主な関数は単にconvertBSTtoLinkedListとprintListを呼び出します。どんな助けもありがとう!
'linkedListINIT(list、root)'関数呼び出しでは 'linkedListINIT()'関数は変数 'list'を変更できません。それが何をするかは関係ありません。 C言語は厳密に値渡しであるため、*引数として渡される変数を変更することはできません。 – AlexP