저는 초급 프로그래머입니다. 일주일 전에 링크 된 목록에 소개되었지만, 저는 아직도이 문제를 해결하기 위해 고심하고 있습니다.C 프로그래밍 : 링크 된 목록의 마지막 요소를 팝하는 방법?
현재 연결된 목록에서 마지막 요소를 제거하는 데 도움이되는 함수를 작성하려고합니다. 나는 내가 여기서 잘못하고있는 몇 가지 설명을 고맙게 생각한다. 어떤 제안이있어 주셔서 감사합니다.
typedef struct node {
ElemType val;
struct node *next;
} NODE;
struct list_struct {
NODE *front;
NODE *back;
};
그리고 heres는 내 현재 코드 : 목록이 비어있는 경우
, 우리는 아무것도하지 않고
내가 만지거나 현재 구조체 다음을 수정할 수 아니에요
내 구조체입니다 임의의 값 을 반환하면 목록의 마지막 요소가 제거되고 값이 반환됩니다.
ElemType lst_pop_back(LIST *l) {
NODE * p = l->front;
NODE * trail = l->front;
if(p == NULL) return 0;
if(lst_len(l) == 1){
free(p);
l->front = NULL;
l->back = NULL;
}
else{
p=p->next;
while(p != NULL){
if(p->next == NULL) free(p);
trail = trail->next;
p=p->next;
}
trail= trail->next;
trail->next= NULL;
}
return 0;
}
나는 MAC에 엑스 코드를 사용하고 있는데 내가 오류는 다음과 같습니다 스레드 1 : EXC_ACCESS (코드 = 1, 주소 = 0x8이) 내가 생각
내가 잘못 여기서 뭐하는거야 * - 당신이 뭔가 잘못하고 있다고 생각 왜.? 오류/segfault/예기치 않은 결과가 표시됩니까? –
좋아요, 그래서 당신은 제목을 다시 이중 링크 된 목록을 변경했습니다. 이제는 원래 "오프 주제"주석으로 돌아가 보겠습니다. 단 하나의 링크 된 목록 만 가지고있는 경우'list_struct'에있는'back' 멤버의 요점은 무엇입니까? – John3136
독자적으로 링크 된 목록을 구성 할 때 뭔가 잘못된 것처럼 보입니다. 소스 코드의 일부를 추가하십시오. – mash