[アルゴリズム]銀行管理待ち番号(C)
銀行が待機番号を管理するプログラムを作成しましょう.
前から終了した構造のキューを使用します.
前に保存した値を0でエクスポートします. の負数または条件に合致しない場合は、終了します. コンソールウィンドウでは、ユーザーが入力した配列がそれより大きい場合、 関数が使用されます. enqueueはテールを追加し、それに応じてqueue sizeも追加した. キュー[tail]値にユーザが入力した値を加えます.
Dequeueを宣言したのは、queue関数を前に表示したときです.最初に入れたものが1位になります.0を入力すると、配列の前の最初の入力値が出力されます.
r=queue[head]値は、==エクスポートされた値/r値にqueueを代入し、順序的に前に位置する.
head++が増加したのは、前の値がエクスポートされたため、tail方向に移動します.
queue sizeは配列全体のサイズが小さくなるため減少する.
しかし、問題があります.列の前に空席があっても使えません.この問題を解決するために,筆者は円形キューを用いた.
前から終了した構造のキューを使用します.
<コード>
#include <stdio.h>
#define QUEUE_CAPA 8
int queue[QUEUE_CAPA]; // 전체적인 배열을 선언한 것이다.
int head = 0; // 배열의 맨 앞 부분을 의미한다.
int tail = 0; // 꼬리 부분을 의미한다.
int queue_size = 0; // 값을 넣은 부분(인덱스)을 의미한다.
int enqueue(int n)
{
if (queue_size == QUEUE_CAPA)
{
printf("queue Full!!! \n");
return;
}
tail++;
queue_size++;
queue[tail] = n;
}
int dequeue()
{
int r;
if (queue_size == 0)
{
printf("queue empty!!\n");
return 0;
}
r = queue[head];
head++;
queue_size--;
return r;
}
int main()
{
int number, r;
do {
printf("input number\n");
scanf_s("%d", &number);
if (number > 0)
{
enqueue(number);
}
else if (number == 0)
{
r = dequeue();
printf("[%d]\n", r);
}
} while (number >= 0);
return 0;
}
<結果>
前に保存した値を
<重要コード1>
int enqueue(int n)
{
if (queue_size == QUEUE_CAPA)
{
printf("queue Full!!! \n");
return;
}
tail++;
queue_size++;
queue[tail] = n;
}
<重要コード2>
int dequeue()
{
int r;
if (queue_size == 0)
{
printf("queue empty!!\n");
return 0;
}
r = queue[head];
head++;
queue_size--;
return r;
}
Dequeueを宣言したのは、queue関数を前に表示したときです.最初に入れたものが1位になります.0を入力すると、配列の前の最初の入力値が出力されます.
r=queue[head]値は、==エクスポートされた値/r値にqueueを代入し、順序的に前に位置する.
head++が増加したのは、前の値がエクスポートされたため、tail方向に移動します.
queue sizeは配列全体のサイズが小さくなるため減少する.
しかし、問題があります.列の前に空席があっても使えません.この問題を解決するために,筆者は円形キューを用いた.
tail = (tail + 1) % QUEUE_CAPA;
head = (head + 1) % QUEUE_CAPA;
各部分のコードをこのように修正すればいいです.Reference
この問題について([アルゴリズム]銀行管理待ち番号(C)), 我々は、より多くの情報をここで見つけました https://velog.io/@qlwb7187/알고리즘은행관리-대기번호Cテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol