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

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

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

https://youtu.be/0kddqbHGGsM

 

어떤 노드 뒤에 새로운 노드 삽입하기

Node *tmp = (Node *)malloc(sizeof(Node));
tmp->data = data_to_store;
tmp->next = prev->next;
prev->next = tmp;

 

insert_after()

// 삽입에 성공하면 1, 아니면 0을 반환

int add_after(Node *prev, char *item)
{
	if (prev == NULL)
    	return 0;
	Node *tmp = (Node *)malloc(sizeof(Node));
    tmp->data = item;
    tmp->next = prev->next;
    prev->next = tmp;
    
    return 1;
}

 

첫번째 노드의 삭제

Node * remove_first()
{
	if (head == NULL)
    	return NULL;
    else
    {
    	Node *tmp = head;
        head = head->next;
        return tmp;
    }
}

 

어떤 노드의 다음 노드 삭제하기

Node *remove_after(Node *prev)
{
	Node *tmp = prev->next;
    if (tmp == NULL)
    	return NULL;
    else
    {
    	prev->next = tmp->next;
        return tmp;
    }
}

 

연결리스트 순회하기

Node *find(char *word)
{
	Node *p = head;
    while (p != NULL)
    {
    	if (strcmp(p->data, word) == 0)
        	return p;
        p = p->next;
    }
    return NULL;
}