-1
다음 함수 중 하나를 실행하면 세그먼트 화 오류가 발생합니다. 나에게는 그들이 일해야하는 것처럼 보인다. malloc을 사용하는 방식과 관련이 있다고 생각합니다. 어떤 파일이 오류를 일으키고 있는지 지적 할 수 있다면, 나는 영원히 감사 할 것입니다.프로그래밍에서 세그먼트 오류 연결 목록
기능 자체는 매우 자명합니다. 첫 번째 파일에서 파일을 읽고 링크 된 목록의 시작 부분에 int를 포함하는 노드를 추가합니다. 두 번째 노드는 동일하지만 노드를 끝에 추가합니다. 세 번째 노드는 연결된 목록에서 세 번째 노드를 삭제하고 마지막 노드는 마지막 노드를 삭제합니다.
LinkedList readAndAddToStart(LinkedList list, FILE *inputFile) {
LinkedList head;
head = (LinkedList)malloc(sizeof(LinkedList));
int num;
fscanf(inputFile, "%d", &num);
head->data = num;
head->next = list;
return head;
}
LinkedList readAndAddToEnd(LinkedList list, FILE *inputFile) {
LinkedList addNode;
addNode = (LinkedList)malloc(sizeof(LinkedList));
LinkedList head;
head = list;
int num;
fscanf(inputFile, "%d", &num);
addNode->data = num;
addNode->next = NULL;
while (list->next != NULL) {
list = list->next;
}
list->next = addNode;
return head;
}
LinkedList deleteFirst(LinkedList list) {
LinkedList temp;
temp = list;
if (list != NULL) {
list = list->next;
free(temp);
temp = NULL;
}
return list;
}
LinkedList deleteLast(LinkedList list) {
LinkedList head;
head = list;
if (list != NULL) {
while (list->next->next != NULL) {
list = list->next;
}
free(list->next);
list->next = NULL;
}
return head;
}
내 구조체 list
가 비어있는 경우 충돌합니다이 BTW
struct ListNode {
int data;
struct ListNode *next;
};
typedef struct ListNode *LinkedList;
디버거를 사용하거나 더 나은 valgrind를 사용하여 문제를 찾으십시오. – bmargulies
디버깅 및 모든 컴파일러 경고를 사용하여 프로그램을 다시 컴파일하십시오. 경고 메시지마다 근본 원인을 수정하십시오. 'valgrind'로 프로그램을 실행하고, 그것이 출력하는 에러 메시지를 이해하고 근본 원인을 수정하십시오. 막히면 전체 프로그램의 소스 코드 (http://sscce.org/)와 전체 오류 또는 경고 메시지를 복사하여 귀하의 질문에 붙여 넣은 다음 도움을 요청하십시오. – pts
먼저 어떤 기능을 찾으십시오. 간단합니다. – longdeqidao