💜 코딩테스트/💜 자료구조
[💜 자료구조2] Queue 큐 (배열, linked)
eyes from es
2023. 7. 20. 12:14
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
반응형