편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2021.10.05

    예외가 throw됨: 읽기 액세스 위반입니다. 처리되지 않은 예외가 throw됨: 읽기 액세스 위반입니다. 두개가 뜹니다.


    #include<stdio.h>
    #include<stdlib.h>
    typedef struct treeNode
    {
        element key;
        struct treeNode* left;
        struct treeNode* right;
    }treeNode;
    
    void insertITE(treeNode** root, element key)
    {
        treeNode *p, *t;
        treeNode *n;
    
        t = *root;
        p = NULL;
    
        while (t)
        {
            if (key == t->key) // 이부분에서  제목과 같이 메시지가 뜹니다. 
                return;
    
            p = t;
    
            if (key < p->key)
                t = p->left;
            else
                t = p->right;
        }
    
    
        n = (treeNode*)malloc(sizeof(treeNode));
        if (!n) return;
    
        if (p)
        {
            if (key < p->key)
                p->left = n;
            else
                p->right = n;
        }
        else
            *root = n;
    }
    
    int main(void)
    {
        FILE *fp;
        treeNode* root = NULL;
        element temp;
    
        fp = fopen("data.txt", "r");
        while (!feof(fp))
        {
            fscanf(fp, "%d", &temp);
            insertITE(&root, temp);
        }
    }
    

    이진트리 삽입 알고리즘을 짜고있는데요 주석달린부분에서 자꾸 에러메시지가 뜨고 코드 진행이 되지않습니다. 해결방법이 있을까요?

    이미지도 첨부합니다

    이미지

    이미지

  • 프로필 알 수 없는 사용자님의 편집
    날짜2021.10.03

    예외가 throw됨: 읽기 액세스 위반입니다. 처리되지 않은 예외가 throw됨: 읽기 액세스 위반입니다. 두개가 뜹니다...


    #include<stdio.h>
    #include<stdlib.h>
    typedef struct treeNode
    {
        element key;
        struct treeNode* left;
        struct treeNode* right;
    }treeNode;
    
    void insertITE(treeNode** root, element key)
    {
        treeNode *p, *t;
        treeNode *n;
    
        t = *root;
        p = NULL;
    
        while (t)
        {
            if (key == t->key) // 이부분에서  제목과 같이 메시지가 뜹니다. 
                return;
    
            p = t;
    
            if (key < p->key)
                t = p->left;
            else
                t = p->right;
        }
    
    
        n = (treeNode*)malloc(sizeof(treeNode));
        if (!n) return;
    
        if (p)
        {
            if (key < p->key)
                p->left = n;
            else
                p->right = n;
        }
        else
            *root = n;
    }
    
    int main(void)
    {
        FILE *fp;
        treeNode* root = NULL;
        element temp;
    
        fp = fopen("data.txt", "r");
        while (!feof(fp))
        {
            fscanf(fp, "%d", &temp);
            insertITE(&root, temp);
        }
    }
    

    이진트리 삽입 알고리즘을 짜고있는데요 주석달린부분에서 자꾸 에러메시지가 뜨고 코드 진행이 되지않습니다... 해결방법이 있을까요? ㅠㅠ

    이미지도 첨부합니다

    이미지

    이미지