μ°μμ μΈ λ©λͺ¨λ¦¬ μμΉμ μ μ₯λμ§ μλ μ ν λ°μ΄ν° ꡬ쑰
(ν¬μΈν°λ₯Ό μ¬μ©ν΄μ μ°κ²°λλ€)
κ° λ Έλλ λ°μ΄ν° νλμ λ€μ λ Έλμ λν μ°Έμ‘°λ₯Ό ν¬ν¨νλ λ Έλλ‘ κ΅¬μ±
μ Linked Listλ₯Ό μ¬μ©νλ?
λ°°μ΄μ λΉμ·ν μ νμ μ ν λ°μ΄ν°λ₯Ό μ μ₯νλλ° μ¬μ©ν μ μμ§λ§ μ ν μ¬νμ΄ μμ
λ°°μ΄μ ν¬κΈ°κ° κ³ μ λμ΄ μμ΄ λ―Έλ¦¬ μμμ μμ λν΄ ν λΉμ λ°μμΌ ν¨
μλ‘μ΄ μμλ₯Ό μ½μ νλ κ²μ λΉμ©μ΄ λ§μ΄ λ¬ (곡κ°μ λ§λ€κ³ , κΈ°μ‘΄ μμ μ λΆ μ΄λ)
μ₯μ
λμ ν¬κΈ°
μ½μ /μμ μ©μ΄
λ¨μ
μμλ‘ μ‘μΈμ€λ₯Ό νμ©ν μ μμ. μ¦, 첫 λ²μ§Έ λ ΈλλΆν° μμ°¨μ μΌλ‘ μμμ μ‘μΈμ€ ν΄μΌν¨ (μ΄μ§ κ²μ μν λΆκ°λ₯)
ν¬μΈν°μ μ¬λΆμ λ©λͺ¨λ¦¬ 곡κ°μ΄ λͺ©λ‘μ κ° μμμ νμ
λ Έλ ꡬνμ μλμ κ°μ΄ λ°μ΄ν°μ λ€μ λ Έλμ λν μ°Έμ‘°λ‘ λνλΌ μ μλ€
// A linked list node
struct Node
{
int data;
struct Node *next;
};
Single Linked List
λ Έλ 3κ°λ₯Ό μλ μ½λλ₯Ό λ§λ€μ΄λ³΄μ
head second third
| | |
| | |
+---+---+ +---+---+ +----+----+
| 1 | o----->| 2 | o-----> | 3 | # |
+---+---+ +---+---+ +----+----+
λ Έλ μΆκ°
- μμͺ½μ λ Έλ μΆκ°
void push(struct Node** head_ref, int new_data){
struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));
new_node->data = new_data;
new_node->next = (*head_ref);
(*head_ref) = new_node;
}
- νΉμ λ Έλ λ€μμ μΆκ°
void insertAfter(struct Node* prev_node, int new_data){
if (prev_node == NULL){
printf("μ΄μ λ
Έλκ° NULLμ΄ μλμ΄μΌ ν©λλ€.");
return;
}
struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));
new_node->data = new_data;
new_node->next = prev_node->next;
prev_node->next = new_node;
}
- λμͺ½μ λ Έλ μΆκ°
void append(struct Node** head_ref, int new_data){
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
struct Node *last = *head_ref;
new_node->data = new_data;
new_node->next = NULL;
if (*head_ref == NULL){
*head_ref = new_node;
return;
}
while(last->next != NULL){
last = last->next;
}
last->next = new_node;
return;
}