Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- Floyd
- 김씨만행복한세상
- 큐
- sql #오라클 #oracle #sequence #foreach #insert #mybatis
- kafka #consumer #autoStartup
- 1037
- 알고리즘
- CKAD
- maven #메이븐 #빌드 #build #lifecycle
- 정올
- 암스트롱 수
- Floyd 알고리즘
- 오류교정
- 새로운방
- JAVA #필수값
- 최단거리
- 1108
- 토마토(고)
- 페이지전환
- kubectl
- 페이지 전환
- kafka connect #debizium #transform
- kafka #ackmode #manual #acknowledge
- kubernets
- hexagonal architecture #layer architecture #아키텍쳐 #헥사고날
- 2613
- 코드그라운드
- 새로운 방
- 1045
- 태그를 입력해 주세요.
Archives
- Today
- Total
별집사의 IT세상
큐와 스택 본문
반응형
알고리즘을 짤 때 많이 쓰이는 큐와 스택
스택은 의미처럼 박스에 차곡차곡 쌓는다고 생각하면 된다. 열려있는 구멍은 위 뿐이라 뺄 때도 제일 나중에 들어간 값이 나오게 된다.
즉 LIFO(Last In First Out)
보통 맨 위의 위치를 TOP으로 설정하고, 꺼내는 함수를 Pop, 넣는 함수를 Push로 한다.
int stack[n];
int TOP = 0;
void Push(int data){
if(TOP==n){
printf("Stack is Full\n");
}
else{
stack[TOP++] = data;
}
}
int Pop(){
if(TOP){
printf("Stack is Empty\n");
return -1;
}
else{
return stack[--TOP];
}
}
큐는 구멍이 위와 아래 두 곳이고, 넣는 곳은 위, 빼는 곳은 아래이다. 그래서 먼저 넣는 순서대로 밑에 저장되고, 가장 먼저 넣은 것이 가장 먼저 나오게 되는 구조이다. 즉 FIFO(First In First Out)
보통 아래쪽을 Front(Head), 위쪽을 Rear(Tail)로 설정하고 꺼내는 함수를 Dequeue, 넣는 함수를 Enqueue로 한다.
int queue[n];
int front = 0;
int rear = 0;
void enqueue(int data){
if ((rear +1) % n == front){
printf("Queue is Full\n");
}
else {
queue[rear] = data;
rear = (rear +1 ) % n;
}
}
int dequeue(){
int data;
if (front == rear){
printf("Queue is Empty\n");
return -1;
}
else {
data = queue[front];
front = (front + 1) % n;
return data;
}
}
큐는 배열의 앞 값을 빼고, 뒤에 값을 추가 하기 때문에 rear 값이 배열의 크기인 n을 넘어 갈 수 있다. 따라서 % n 을 통해 배열의 앞과 뒤를 연결하는 선형 큐를 통상적으로 알고리즘에 사용한다.반응형
'IT > IT 정보' 카테고리의 다른 글
| Vue 즉시실행함수표현 (0) | 2024.11.08 |
|---|---|
| 메이븐(Maven)에 대해 알아보자 (7) | 2024.11.06 |
| 알고리즘 기법 (0) | 2017.04.15 |
| Floyd 알고리즘 (0) | 2017.04.15 |
Comments