알고리즘, 자료구조/개념정리

[C][강의정리] 연결 리스트 개념과 기본 동작들 (5)

soohkang 2022. 7. 12. 22:55
728x90

https://youtu.be/s-c2IbG0E_I

 

연결리스트 순회하기

Node *get_node(int index)
{
	if (index < 0)
    	return NULL;
    Node * p = head;
    for (int i = 0; i < index && p!=NULL; i++)
    	p = p->next;
    return p;
}

 

 

연결리스트의 index번째 위치에 새로운 노드를 만들어서 삽입한다.

void add(int index, ...)

int add(int index, char *item)
{
	if (index < 0)
    	return 0;
    if (index == 0)
    {
    	add_first(item);
        return 1;
    }
    
    Node *prev = get_node(index - 1);
    if (prev != NULL)
    {
    	add_after(prev, item);
        return 1;
    }
    return 0;
}

 

 

 

index번째 노드를 삭제하고, 그 노드에 저장된 데이터를 반환.

char *remove(int index,...)

Node *remove(int index)
{
	if (index < 0)
    	return NULL;
        
    if (index == 0)
    	return remove_first();
        
    Node *prev = get_node(index - 1);
    if (prev == NULL)
    	return NULL;
    else
    {
    	return remove_after(prev);
    }
}