2012-03-17 9 views
0

저는 데이터 구조가 새롭고 이진 트리 구현을 사용하여 추측 게임을하도록 지정되었습니다. 나는 파일 구현없이 프로그램 흐름을 완성했다.바이너리 트리가 파일에서 다시 작성되지 않습니다.

그것이 엔젤 록신인가 :? # Neneng B는 샘 핀토가 나는이 내 파일에 파일 에서 나무를 재건 문제가 이제 외부 파일에 preorderly 이진 트리를 저장 한? 화이트 뷰티?가요? 마리안 리베라? # 핫드 섹시? 크리스틴 레이즈인가? ###

"#"은 NULL 노드를 나타냅니다.

나는 또한 나의 코드가있다. 교수님이 준 알고리즘을 따른다. 나는 인터넷에서 검색하고 내 교수가 말한 것과 같은 알고리즘을 주었다. 내 문제는 프로그램이 충돌 할 때마다 3 번째가 아닌 모든 데이터에 있습니다. 충돌의 주된 이유는 세 번째 non-null 데이터가 삽입 된 후에 null로 설정되지 않은 노드라고 생각합니다. 그렇다면 어떻게 NULL로 설정하면 내 프로그램이 충돌하지 않을 수 있습니다. 파일의 데이터를 문자열 배열에 할당하고 배열의 마지막 색인에 "\ 0"을 설정합니다.

void read(node *temp) 
{ 
    while(array[j]=="#") 
     j++; 

    if(array[j]=="\0") 
     return; 

    node *nNode; 
    nNode = new node; 
    nNode->yes=NULL; 
    nNode->no=NULL; 
    nNode->data=array[j]; 
    j++; 
    temp=nNode; 
    read(temp->yes); 
    read(temp->no); 
} 

답변

0

문제는 읽기 기능의 정의에 있습니다. 그 생각은 "temp"가 "node *"유형의 출력 매개 변수라는 것입니다. 그러나 이것은 당신이 쓴 것이 아닙니다. 포인터 또는 '노드 *'매개 변수에 대한 참조가 있어야합니다 (예 : 그래서 :

void read(node** temp)

그런 다음 적절한 (드)에 의해 컴파일 참조입니다 같은 코드의 나머지 부분을 조정합니다. 이것은 당신의 충돌을 해결해야합니다.

관련 문제