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

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

soohkang 2022. 7. 12. 20:38
728x90

https://youtu.be/9Qi3PhBSzA0

 

 

* 연경리스트의 맨 앞에 새로운 노드 삽입하기

(1) 새로운 노드를 만들고 추가할 데이터를 저장한다. malloc 사용

(2) 새로운 노드의 next필드가 현재의 head노드를 가리키도록 한다.

(3) 새로운 노드를 새로운 head노드로 한다.

 

Node *tmp = (Node *)malloc(sizeof(Node));
tmp->data = "Ann";
tmp->next = head;
head = tmp;

 

 

첫번째 노드를 가리키는 포인터 head가 전역변수인 경우

void add_first(char *item)
{
	Node *temp = (Node *)malloc(sizeof(Node));
    temp->data = item;
    temp->next = head;
    head = temp;
}

 

첫번재 노드를 가리키는 포인터 head가 전역변수가 아닌 경우

방법 1.

void add_first(Nodr **ptr_head, char *item)
{
	Node *tmp = (Node *)malloc(sizeof(Node));
    temp->data = item;
    temp->next = *ptr_head;
    *ptr_head = tmp;
}

// main
int main()
{
	add_first(&head, item_to_store);
}

 

방법 2.

Node *add_first(Node *head, char *item)
{
	Node *temp = (Node *)malloc(sizeof(Node));
    temp->data = item;
    temp->next = head;
    return temp;
}

int main()
{
	head = add_first(head, item_to_store);
}