[15] C review < 이중연결리스트 > 과제 수정 필요

[15] C review < 이중연결리스트 > 과제 수정 필요

단방향 연결 리스트(single linked list)의 한계

- 어떤 노드의 앞에 새로운 노드를 삽입하기 어려움

- 삭제의 경우에 항상 삭제할 노드의 앞 노드가 필요

- 단방향의 순회만이 가능

이중 연결 리스트

- 각각의 노드가 다음(next)노드와 이전(previous)노드의 주소를 가지는 연결 리스트

- 양방향의 순회(traverse)가 가능.

각 노드에 하나의 문자열이 저장된다고 가정하자.

#include #include struct node { char *data; struct node next; struct node prev; }; typedef struct node Node; Node *head; Node *tail; int size = 0;

노드를 삽입하는 경우를 알아봅시다. 이 과정은 순서가 매우 중요합니다.

삭제할때는 해당노드에 바로 접근하여 삭제하면 됩니다.

< 추가할때 여려 경우의 수 >

1. 비어있는 리스트에서 처음 노드 삽입하기

2. 맨 앞에 노드 삽입하기

3. 맨 끝에 노드 삽입하기

4. 중간에 노드 삽입하기

< 삭제할때 여려 경우의 수 > 과제.

1. p가 유일한 노드인 경우

2. p가 head인 경우

3. p가 tail인 경우

4. 그밖의 일반적인 경우

< 정렬된 상태에서의 추가 >

뒤에서부터 순회

from http://returnclass.tistory.com/108 by ccl(A) rewrite - 2021-11-29 12:00:29