0
C에서 포인터를 올바르게 사용하는 방법을 배우려고합니다. 현재 값 앞에 값이있는 노드를 삽입하는 함수를 작성하려고합니다. 내 기능은 다음과 같습니다.주어진 요소 앞에 이중 링크 된 목록 삽입
struct list *listAddBefore(struct list *element, int insertWhat, int insertBefore)
{
element = listToFirst(element);
while (element -> next)
{
if (element -> value == insertBefore)
{
struct list *temp = listCreateElement(insertWhat, element->prev, element);
element -> prev -> next = temp;
element -> prev = temp;
return temp;
}
element = element -> next;
}
return NULL;
}
struct list *listToFirst(struct list *element)
{
while (element -> prev)
element = element -> prev;
return element;
}
struct list *listCreateElement(int value, struct list *prev, struct list *next)
{
struct list *element = (struct list *) malloc(sizeof(struct list));
element -> value = value;
element -> prev = prev;
element -> next = next;
return element;
}
무엇이 문제입니까? 컴파일러가 나에게 세그먼트 화 오류를 준다.
실행을 작동하는 방법을 배울 수 있도록 코드를 수정했습니다. 그것은 그것이 어디에서 세분되는지 알려줄 것입니다. –
...'struct list'의 정의를 보여줍니다. –
:'element-> prev -> next = temp;','element-> prev'는'element'가 목록에 처음 있다면 null 일 수 있습니다. – agbinfo