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

조회수 2030회

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 는 현재 삭제할 노드를 가리킬 포인터에요)

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)