07장 큐(Queue) – 연결리스트(LinkedList)를 이용한
- 연결 리스트(LinkedList)를 이용한 큐(Queue) 구현 #1 : S007_LinkedListQueue.c
12345678910#include <stdio.h>#include <stdlib.h>typedef struct _node{int data;struct _node * next;} Node;Node *front = NULL;Node *rear = NULL; - 연결 리스트(LinkedList)를 이용한 큐(Queue) 구현 #2
12345678910111213void Free(){Node *cur;while(front != NULL) {cur = front;front = front->next;free(cur);}}void main(int argc, char* argv[]){Free();} - 연결 리스트(LinkedList)를 이용한 큐(Queue) 구현 #3
123456789101112131415161718void enqueue(int data){Node *newNode = (Node *)malloc(sizeof(Node));newNode->data = data;newNode->next = NULL;if(front == NULL){front = newNode;rear = newNode;}else{rear->next = newNode;rear = newNode;}}void main(int argc, char* argv[]){enqueue(1);Free();} - 연결 리스트(LinkedList)를 이용한 큐(Queue) 구현 #4
12345678910111213void printQueue(){Node *cur = front;while(cur != NULL){printf("%d ", cur->data);cur = cur->next;}printf("\n\n");}void main(int argc, char* argv[]){enqueue(1); printQueue();Free();} - 연결 리스트(LinkedList)를 이용한 큐(Queue) 구현 #5
1234567891011121314151617181920212223int dequeue(){int data = -1;if(front == NULL){printf("Empty\n");}else{Node *cur = front;data = cur->data;front = cur->next;free(cur);}return data;}void main(int argc, char* argv[]){enqueue(1); printQueue();enqueue(3); printQueue();enqueue(5); printQueue();printf("POP : %d\n", dequeue()); printQueue();printf("POP : %d\n", dequeue()); printQueue();Free();} - 연결 리스트(LinkedList)를 이용한 큐(Queue) # 6
1234567891011121314151617181920int peek(){if(front == NULL){printf("Empty\n");return -1;}else{return front->data;}}void main(int argc, char* argv[]){enqueue(1); printQueue();enqueue(3); printQueue();enqueue(5); printQueue();printf("PEEK : %d\n", peek()); printQueue();printf("POP : %d\n", dequeue()); printQueue();printf("POP : %d\n", dequeue()); printQueue();Free();} - 연결 리스트(LinkedList)를 이용한 큐(Queue) 완성 버전
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107#include <stdio.h>#include <stdlib.h>typedef struct _node{int data;struct _node * next;} Node;Node *front = NULL;Node *rear = NULL;////// queue의 기본함수 enqueue(), dequeue(), +알파함수 peek()void enqueue(int data){Node *newNode = (Node *)malloc(sizeof(Node));newNode->data = data;newNode->next = NULL;if(front == NULL){front = newNode;rear = newNode;}else{rear->next = newNode;rear = newNode;}}int dequeue(){int data = -1;if(front == NULL){printf("Empty\n");}else{Node *cur = front;data = cur->data;front = cur->next;free(cur);}return data;}int peek(){if(front == NULL){printf("Empty\n");return -1;}else{return front->data;}}////////// stack 추가 함수void initQueue(){front = NULL;rear = NULL;}int isEmpty(){if(front == NULL){return 1; //true}else{return 0; //false}}int isFull(){} //존재할 필요가 없음void printQueue(){Node *cur = front;while(cur != NULL){printf("%d ", cur->data);cur = cur->next;}printf("\n\n");}void Free(){Node *cur;while(front != NULL) {cur = front;front = front->next;free(cur);}}///////// 메인 함수void main(){enqueue(1); printQueue();enqueue(3); printQueue();enqueue(5); printQueue();printf("PEEK : %d\n", peek()); printQueue();printf("POP : %d\n", dequeue()); printQueue();printf("POP : %d\n", dequeue()); printQueue();enqueue(7); printQueue();enqueue(9); printQueue();enqueue(11); printQueue();enqueue(13); printQueue();enqueue(15); printQueue();printf("POP : %d\n", dequeue()); printQueue();printf("PEEK : %d\n", peek()); printQueue();printf("POP : %d\n", dequeue()); printQueue();printf("POP : %d\n", dequeue()); printQueue();printf("POP : %d\n", dequeue()); printQueue();Free();}