[단일 연결 리스트의 특징]
- 다음 노드는 알 수 있지만, 이전 노드는 알 수 없다.
[insert_front 과정]
01234
[delete_front 과정]
012
typedef struct _Node Node; struct _Node { int data; Node * next; }; Node * Head; void insert_front( int data ) { Node * node = (Node *)malloc(sizeof(Node)); node->data = data; node->next = Head; Head = node; } void delete_front() { Node * node = Head; Head = Head->next; free(node); } void print_list() { Node * node = Head; while(node != NULL) { printf("%d -> ", node->data); node = node->next; } printf("NULL\n"); } int main() { int i; for(i = 0; i<10; i++) { insert_front(i); print_list(); } for(i = 0; i<9; i++) { delete_front(); print_list(); } }
[결과]
[문제점]
- 노드의 삽입/삭제 코드가 일반화 되지 못 함.
(코드에서 삽입하는 위치가 맨 앞으로 고정했기 때문에 하나의 함수였지만, 다른 특정한 위치에 삽입을 하거나 삭제를 할려고 하면 별도의 함수를 또 만들어야 한다.)
[해결책]
- 헤더부분에 데이터가 들어있지 않은 dummy 노드를 만들게 되면 입력되는 형태가 일치되어 코드를 일반화 할 수 있음.
'Develop' 카테고리의 다른 글
단일 연결 리스트(Single Linked List)_3 (0) | 2014.02.07 |
---|---|
단일 연결 리스트(Single Linked List)_2 (0) | 2014.02.07 |
resolveUri failed on bad bitmap uri: android.graphics.drawable.BitmapDrawable 에러 (0) | 2014.01.21 |
자바 컴파일 과정 (0) | 2014.01.14 |
[STL] 벡터(Vector)와 리스트(List) (0) | 2014.01.14 |