본문 바로가기

C/부스트코스

[부스트코스]자료구조 퀴즈 4

반응형

Q>

연결 리스트의 중간에 node를 추가하거나 삭제하는 코드는 어떻게 작성할 수 있을까요?

 

A>

노드가 목록에 있는지 확인하고 존재하는 경우 새 노드의 다음 포인터를 다음 노드의 다음 포인터가 있는 다음 노드를 가리킨다. 

 

node* insert_before(node *head, int data, node* nxt)
{
    if(nxt == NULL || head == NULL)
        return NULL;
 
    if(head == nxt)
    {
        head = prepend(head,data);
        return head;
    }
 
    /* 첫 번째 노드부터 시작하여 이전 노드를 찾습니다. */
    node *cursor = head;
    while(cursor != NULL)
    {
        if(cursor->next == nxt)
            break;
        cursor = cursor->next;
    }
 
    if(cursor != NULL)
    {
        node* new_node = create(data,cursor->next);
        cursor->next = new_node;
        return head;
    }
    else
    {
        return NULL;
    }
}

 

 

https://www.boostcourse.org/cs112

 

모두를 위한 컴퓨터 과학 (CS50 2019)

부스트코스 무료 강의

www.boostcourse.org

 

반응형