일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- html youtube
- #다차원포인터
- #성적관리프로그램
- #JAVASCRIPT
- html object
- #android activity
- hyperledger transaction
- html charset
- mac terminal command
- #C++ has~a
- #binary
- #3차원배열
- 하이퍼레저패브릭
- html multimedia
- html5 new tag
- #CallByAddress
- html video
- #1차원배열
- html plug-in
- html code
- border-box
- relative path
- 토큰경제
- git flow
- html id
- #C++ 연산자함수오버로딩
- #2차원배열
- #bubbleSort
- #자바상속#자바이즈어#is~a
- docker example
- Today
- Total
A sentimental robot
CircularQueue 본문
#include<stdio.h>
int Enqueue(struct Queue*q, int data);
int Dequeue(struct Queu *q, int *data);
struct Queue
{
int data[6];
int front;
int rear;
};
int Enqueue(struct Queue*q, int data){
if((q->rear+1)%6 == q->front) return 0; // int data[5]( full state )일 때, 값을 넣지 못하게 함
q->data[q->rear%6] = data; // int data[6]이면 int data[0]이 되도록 (환영큐)
q->rear++;
// q->data[q->rear++%6]=data;
return 1;
}
int Dequeue(struct Queue *q, int *data){
if(q->front == q->rear) return 0; // empty state
*data=q->data[q->front%6];
q->front++;
// *data=q->data[q->front++%6];
return 1;
}
void main()
{
struct Queue q={0};
int data;
Enqueue(&q,10);
Enqueue(&q,20);
Enqueue(&q,30);
Enqueue(&q,40);
Enqueue(&q,50);
Enqueue(&q,90);
Dequeue(&q,&data); printf("%d\n",data);
Dequeue(&q,&data); printf("%d\n",data);
Enqueue(&q,60);
Enqueue(&q,70);
Enqueue(&q,80);
Dequeue(&q,&data); printf("%d\n",data);
Dequeue(&q,&data); printf("%d\n",data);
Dequeue(&q,&data); printf("%d\n",data);
Dequeue(&q,&data); printf("%d\n",data);
Dequeue(&q,&data); printf("%d\n",data);
}
// 선형큐와 달리 shift(비어있는 앞자리로 한칸씩 이동)가 필요없다.