더블 링크드리스트에서 모든 노드 삭제하기


c언어 기반 doubly linked list에서 현재 지점부터 끝까지 모든 노드를 삭제하는 방법을 알고 싶습니다. 여기서 현재 지점이라고 쓴 의도는 getPrevItem(전 노드를 참조하는 연산?) 을 한 번 이상 사용해 plist->last가 누군가를 가리키게 되었다를 전제했기 때문입니다.

이미지

예를 들어 이런 것인데 그림이 잘 보이실 지 모르겠네요ㅠㅠ

제가 짠 코드는

void curRemoveItem(struct DB_LinkedList* plist) {
    struct Node* delNode;

    plist->current = plist->last->next;
    delNode = plist->current;
    while (plist->current->next != NULL) {
        plist->current = plist->current->next;
        free(delNode);
        delNode = plist->current;
    }
    free(delNode);
    plist->current = plist->last;
}

인데 아무래도 틀린 것 같아서요. 알려주시면 감사하겠습니다ㅠㅠ (current 는 현재 삭제할 노드를 가리킬 포인터에요)


조회수 54


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close