728x90
๋ฐ์ํ
1. ๋ฐฐ์ด ํ Code
#include<stdio.h>
#include<stdlib.h>
#define N 5
typedef int element;
element queue[N];
int front=-1; //์ฌ๊ธฐ์๋ถํฐ ๋น ์ง๋ฉด ๋จ
int rear=-1; //๋ฐ์์ฐจ๋ก
void qinsert(element value){
if (rear>=N-1){ //4
printf("queue overflow");
exit(1);
}
rear++;
queue[rear] = value;
}
element qdelete(){
if (front==rear){ //์ฌ๊ธฐ๊น์ง ๋ฃ์(front) == ์ฌ๊ธฐ๊น์ง ๋บ(rear) ์ฆ, ๋ฃ์๊ฑฐ ๋ค ๋บ = ๊ณต๋ฐฑ
printf("ํ์ ๊ฐ์ด ์์ต๋๋ค");
}
front++;
return queue[front];
}
int main(void){
qinsert(2); //front: -1, rear: 0
qinsert(5); //front: -1, rear: 1
qinsert(1); //front: -1, rear: 2
printf("%d\n",qdelete()); //front: 0, rear: 2
qinsert(3); //front: 0, rear: 3
printf("%d\n",qdelete()); //front: 1, rear: 3
qinsert(4); //front: 1, rear: 4
qinsert(7); //front: 1, rear: 5
}
2. ์ฐ๊ฒฐ ํ Code
#include<stdio.h>
#include<stdlib.h>
typedef int element;
struct queue {
element data;
struct queue* link;
};
//๊ตฌ์กฐ์ฒด queue๋ฅผ ๊ฐ๋ฅดํค๋ ํฌ์ธํฐ
struct queue* front= NULL; // = typedef struct queue_pointer* qpointer;
struct queue* rear= NULL;
void qinsert(element value){
//queue ์ฌ์ด์ฆ๋งํผ ๋์ ํ ๋น-> ๊ตฌ์กฐ์ฒด queue๋ฅผ ๊ฐ๋ฅดํค๋ ํฌ์ธํฐ ํ์
์ผ๋ก ๋ณํ
struct queue* newq = (struct queue*)malloc(sizeof(struct queue)); //(qpointer)malloc(sizeof(struct queue))
newq -> data = value;
newq ->link = NULL;
if (rear==NULL) //๋ค์ด์ฌ์ ๊ฐ NULL = queue๊ฐ ๋น์ด์์ ๋
front = newq; //๋บ ๋ ์๋ถํฐ ๋นผ๋ฉด ๋จ
else
//rear์ link๊ฐ ์๋ก์ด newq์ ์ฃผ์๊ฐ ๊ฐ๋ฅดํด
rear ->link = newq;
//์ฐ๊ฒฐ
rear = newq;
}
element qdelete(){
if(front == NULL){
printf("ํ์ ๊ฐ์ด ์์ต๋๋ค");
exit(1);
}
element tmp = front->data;
struct queue* del = front;
front = front->link;
if(front==NULL) rear = NULL;
free(del);
return tmp;
}
int main(void){
//์ฒ์ ๊ณต๋ฐฑ์ธ ์ํ : front = null, rear = null (null)
qinsert(2); //front: 0๋ฒ์ง, rear: 0๋ฒ์ง (2)
qinsert(9); //front: 0๋ฒ์ง, rear: 1๋ฒ์ง (2->9)
printf("%d\n",qdelete()); // front: 1๋ฒ์ง, rear: 1๋ฒ์ง (0๋ฒ์ง free) (9)
printf("%d\n",qdelete()); // front: null, rear: null (1๋ฒ์ง free) (null)
qinsert(3); //front: 0'๋ฒ์ง, rear: 0'๋ฒ์ง (3)
qinsert(6); //front: 0'๋ฒ์ง, rear: 1'๋ฒ์ง (3->6)
printf("%d\n",qdelete());//front: 1'๋ฒ์ง, rear: 1'๋ฒ์ง (6)
}
#์ฝ๋ฉํ ์คํธ #์ฝ๋ฉ๊ณต๋ถ
728x90
๋ฐ์ํ