일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- laravel
- 삼량진
- 삼량진 자전거
- C언어
- android imageView zoom
- mysql
- workbench
- 창원에서 부산
- c언어 구조체
- spring boot
- elk stack
- 구포에서 삼량진
- 안드로이드 이미지 로드
- 자바
- android facebook
- 부산에서 창원 자전거
- android ImageLoad
- spring
- image zoom
- 로드바이크
- NetworkImageView
- 구조체
- 자전거
- 낙동강 종주
- httpclient post
- android loadImage
- 구포에서 자전거
- 부산에서 창원
- ImageLoad
- volley
Archives
- Today
- Total
은근한
실력키우기 - 자료처리 [Queue] 본문
큐?
큐(queue)는 컴퓨터의 기본적인 자료 구조의 한가지로,
먼저 집어 넣은 데이터가 먼저 나오는 FIFO (First In First Out)구조로 저장하는 형식을 말한다.
영어 단어 queue는 표를 사러 일렬로 늘어선 사람들로 이루어진 줄을 말하기도 하며,
먼저 줄을 선 사람이 먼저 나갈 수 있는 상황을 연상하면 된다.
나중에 집어 넣은 데이터가 먼저 나오는 스택과는 반대되는 개념이다.
#include <stdio.h> #include <stdlib.h> typedef struct _node{ int data; struct _node *next; }node; typedef node* nptr; typedef struct _queue{ int count; nptr front; nptr rear; }queue; queue* create_queue(); void add_queue(queue *qptr,int data); int rm_queue(queue *qptr); int get_count_queue(queue *qptr); void print(int *res, int index); int main(int argc, char** argv){ int n; char select; int data; int index =0; int* res; queue* q; q = create_queue(); scanf("%d",&n); if (n>100) { return -1; } res = (int *)malloc(sizeof(int *)*n); while (n>=1&&n<=100) { scanf("%c",&select); if (select=='i'){ scanf("%d",&data); if (data >10000) { return -1; } add_queue(q, data); n--; } else if (select=='c'){ res[index] = get_count_queue(q); index = index+1; n--; } else if (select=='o'){ res[index] = rm_queue(q); index = index+1; n--; } } print(res, index); return 0; } queue* create_queue(){ queue* new_queue = (queue*)malloc(sizeof(queue)); new_queue->count=0; new_queue->front=NULL; new_queue->rear=NULL; return new_queue; } void add_queue(queue *qptr,int data){ nptr new_node = (nptr)malloc(sizeof(nptr)); new_node->data = data; new_node->next = NULL; if (qptr->count==0){ qptr->front = new_node; qptr->rear = new_node; } else { qptr->rear->next = new_node; qptr->rear = new_node; } qptr->count = qptr->count+1; } int rm_queue(queue *qptr){ int val; if (qptr->count==0) { return -1; } nptr tmp = qptr->front; qptr->front = tmp->next; val = tmp->data; free(tmp); qptr->count--; return val; } int get_count_queue(queue *qptr){ return qptr->count; } void print(int *res, int index){ int i; for (i=0; i<index; i++) { if (res[i]>=0) { printf("%d\n",res[i]); } else { printf("empty\n"); } } } | cs |
'ALGORITHM > Data Structure' 카테고리의 다른 글
실력키우기 - 자료처리 [Insertion Sort] (0) | 2016.01.18 |
---|---|
실력키우기 - 자료처리 [stack] (0) | 2016.01.18 |
Linked List [연결리스트] (0) | 2016.01.16 |