728x90
๋ฐ์ํ
1. ์ํ ๋ฐฐ์ด ํ Code
#include<stdio.h>
#include<stdlib.h>
#define N 5
typedef int element;
element queue[N];
//์ฒ์ ๊ณต๋ฐฑ์ผ๋ 0๋ฒ์ง
int front=0;
int rear=0;
//์ฝ์
void qinsert(element value){
//ํฌํ ์ํ ํ์ธ
//front :0 , rear: 8 => ํ์ insert๋ง ํด์ ๊ฝ ์ฐธ. 0->1->----8->0->1, ์ฌ๊ธฐ์ front์ธ 0๋ฒ์ง๋ ๋น์ด์๋ ์ํ
if (front==(rear+1)%N){//front (ํ์นธ)๋น์๋์
printf("queue overflow");
exit(1);
}
//++rear%N
//=> rear = (rear + 1) % N
// (8+1) % 9 = 0
//๋ง์ฝ +1์ ์ํ๊ณ rear = rear % N ์ด๋ฉด, 8 % 9 = 8, ํ์ฌ rear ์์น์ ์ฝ์
ํ๊ฒ ๋จ.
queue[++rear%N] = value;
}
element qdelete(){
//ํ ๊ณต๋ฐฑ ๊ฒ์ฌ
if (front==rear){
printf("ํ์ ๊ฐ์ด ์์ต๋๋ค");
}
//++front%N
//=> front = (front + 1) % N
// (3+1) % 9 = 4๋ฒ์ง๋ก front ์ด๋
//๋ง์ฝ +1์ ์ํ๊ณ front = front % N ์ด๋ฉด, 3 % 9 = 3, ํ์ฌ front ์์น ๊ทธ๋๋ก์.
return queue[++front%N];
}
int main(void){
//front: 0, rear:0
qinsert(2); // front: 0, rear:1 (2)
qinsert(5); // front: 0, rear:2 (2 5)
qinsert(1); // front: 0, rear:3 (2 5 1)
printf("%d\n",qdelete()); // front: 1, rear:3 (5 1)
qinsert(3); // front: 1, rear:4 (5 1 3)
printf("%d\n",qdelete()); // front: 2, rear:4 (1 3)
printf("%d\n",qdelete()); // front: 3, rear:4 (3)
qinsert(4); // front: 3, rear:5 (3 4)
qinsert(7); // front: 3, rear:6 (3 4 7)
}
2. ์ํ ๋ฐฐ์ด ํ (๋ฌธ์์ด) Code
#include <stdio.h>
#include <stdlib.h>
#define N 5
typedef struct {
char name[50]; //์ด๋ฆ
int student_no; //ํ๋ฒ
} element;
element queue[N];
int front = 0;
int rear = 0;
int isFull() {
//rear๋ก ๋ฃ์ ๊ทธ ๋ค์ ์์น๊ฐ front์ ๊ฐ์ผ๋ฉด ํฌํ
if ((front == (rear + 1)%N)) //ํ์นธ ๋์
return 1;
else
return 0;
}
int isEmpty() {
if (front == rear)
return 1;
else
return 0;
}
void qinsert(element value) {
if (isFull()) {
printf("queue overflow\n");
} else {
queue[++rear%N] = value;
printf("Enqueued: %s\n", value.name);
}
}
element qdelete() {
element value;
if (isEmpty()) {
printf("Queue is empty. Cannot qdelete element.\n");
return value;
} else {
value = queue[++front%N];
printf("Dequeued: %s\n", value.name);
return value;
}
}
int main() {
element e1 = {"John", 123};
element e2 = {"Alice", 456};
element e3 = {"Bob", 789};
qinsert(e1);
qinsert(e2);
qinsert(e3);
element dequeuedElement = qdelete();
return 0;
}
728x90
๋ฐ์ํ