front와 rear을 이용하여 링크드 리스트를 큐처럼 사용.
[AddQ]
01234
[DeleteQ]
012
[소스코드]
#define TRUE 1 #define FALSE 0; typedef struct { int data; } element; typedef struct _queue_node queue_node; struct _queue_node { element item; queue_node* link; }; queue_node* front = NULL; queue_node* rear; int is_empty() { if(front == NULL) { return TRUE; } return FALSE; } void addq(element item) { queue_node* ptr; ptr = (queue_node*)malloc(sizeof(queue_node)); ptr->item = item; ptr->link = NULL; if(front == NULL) { front = ptr; rear = ptr; } else { rear->link = ptr; rear = ptr; } } element deleteq() { queue_node* ptr; element item; if(is_empty()) { printf("Queue is Empty!\n"); exit(1); } ptr = front; front = front->link; item = ptr->item; free(ptr); return item; } int main() { int i; for(i=0; i<10; i++) { element item; item.data = i; addq(item); printf("AddQ: %d\n", i); } for(i=0; i<10; i++) { element item = deleteq(); printf("DeleteQ: %d\n", item.data); } return 0; }
[결과]
'Develop' 카테고리의 다른 글
이진 트리_전위 순회(Preorder Traversal) (0) | 2014.02.11 |
---|---|
이진 트리(Binary Tree) (0) | 2014.02.11 |
링크드 스택(Linked Stack) (0) | 2014.02.11 |
원형 큐(Circular Queue) (0) | 2014.02.10 |
큐(Queue) (0) | 2014.02.09 |