반응형
노드 삽입 방법
- 노드를 삽입할 위치(선행 노드)를 아는 경우
- 헤드포인터가 NULL인 경우: 공백 리스트에 삽입
- pre가 NULL인 경우: 리스트의 맨 처음에 삽입
- 일반적인 경우: 리스트의 중간/마지막에 삽입
- 리스트의 제일 마지막에 노드를 추가하는 경우
- 리스트의 제일 처음 노드로 삽입하는 경우 -> 권장
1. 선행 노드를 아는 경우
// head: 리스트의 헤드 포인터
// pre : 선행 노드
// new_node : 삽입될 노드 (NULL이 아니라고 가정)
void insert_node(Node *head, Node *pre, Node *new_node)
{
if( head == NULL ){ // 공백리스트인 경우
// new_node->link = NULL;
head = new_noe;
}
else if( pre == NULL ){ // pre가 NULL이면 첫번째 노드로 삽입
new->link = head;
head = new_node;
}
else { // pre 다음에 삽입
new_node->link = pre->link;
pre->link = new_noed;
}
}
2. 선행 노드를 모르는 경우 (리스트 마지막에 노드 삽입)
// head: 리스트의 헤드 포인터
// new_noed : 삽입될 노드
void insert_node_at_rear(Node *head, Node *new_noe)
{
if( head == NULL ){ // 공백리스트인 경우
// new_node->link = NULL;
head = new_node;
}
else {
Node *list= head;
while(list->link != NULL)
list = list->link;
list->link = new_node;
}
}
3. 리스트 처음에 노드 삽입 (순서에 관계 없이)
// head: 리스트의 헤드 포인터
// new_node : 삽입될 노드
void insert_node_at_front(Node *head, Node *new_node)
{
new_node->link = head;
head = new_node;
}
따라서, 노드는 리스트 앞부분에 삽입하는 것이 가장 간결하고 쉬우며,
특별히 노드의 순서를 유지할 필요가 없는 경우 리스트의 앞쪽에 삽입하는 것이 가장 편리하다는 것을 알 수 있다.
반응형
'공부 > 자료구조 | 알고리즘' 카테고리의 다른 글
[자료구조] 연결리스트 노드 삭제 (0) | 2019.08.03 |
---|---|
[자료구조] 연결리스트 만들고 출력하기 Linked List (0) | 2019.08.01 |
[자료구조] 단순 연결리스트 (0) | 2019.07.25 |
[자료구조] 배열과 포인터 / 2차원 배열과 포인터 예제 (0) | 2019.07.24 |
[자료구조] 동적 메모리 할당 / 반별, 과목별 평균 성적 구하기 예제 (0) | 2019.07.23 |