연결된 목록으로 변환하려고하는데 디스플레이에 인쇄 할 때 목록을 불러 오려고 할 때 오류가 발생합니다.이진 검색 트리를 연결된 목록으로 변환하는 중 오류가 발생했습니다.
여기 여기
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;
}
내가 최종 목록을 인쇄 할 때 문제는, 내가 인쇄 문으로 그것을 확인 제대로 경우에도 '현재'변수 출력하지만 출력이 없습니다. 어디서 잘못되었는지는 잘 모르겠지만 main 함수는 convertBSTtoLinkedList와 printList를 호출합니다. 어떤 도움을 주시면 감사하겠습니다!
'linkedListINIT (list, root)'함수 호출에서'linkedListINIT()'함수는 변수'list'를 수정할 수 없습니다. 그것이하는 일은 중요하지 않습니다. C 언어는 값에 의해 엄격하게 전달되기 때문에 인자 *로 전달 된 변수를 수정할 수 없습니다. – AlexP