2023-05-21 16:51:07 +08:00
|
|
|
|
/*
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>xiao_lfeng <EFBFBD><EFBFBD>д
|
|
|
|
|
* <EFBFBD>俪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɴ˻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ICP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ICP<EFBFBD><EFBFBD>2022014822<EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
|
2023-05-21 16:38:55 +08:00
|
|
|
|
#include <cstdio>
|
|
|
|
|
|
|
|
|
|
#define MaxSize 100
|
|
|
|
|
|
|
|
|
|
typedef int datatype;
|
|
|
|
|
typedef struct {
|
|
|
|
|
int rear;
|
|
|
|
|
int front;
|
|
|
|
|
datatype data[MaxSize];
|
|
|
|
|
} SqQueue;
|
|
|
|
|
|
|
|
|
|
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
void InitQueue(SqQueue &queue) {
|
|
|
|
|
queue.rear = 0;
|
|
|
|
|
queue.front = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20>ж϶<D0B6><CFB6><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>
|
|
|
|
|
int isEmpty(SqQueue queue) {
|
|
|
|
|
if (queue.rear == queue.front) return 1;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20>ж϶<D0B6><CFB6><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>
|
|
|
|
|
int isFull(SqQueue queue) {
|
|
|
|
|
if (queue.front-1 == queue.rear) return 1;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>
|
|
|
|
|
int enQueue(SqQueue &queue, datatype data) {
|
|
|
|
|
if (queue.front-1 == queue.rear) return 0;
|
|
|
|
|
queue.data[queue.rear] = data;
|
|
|
|
|
if ( (queue.rear+1)%MaxSize == 0 && (queue.rear+1)%MaxSize < queue.front)
|
|
|
|
|
queue.rear = (queue.rear+1)%MaxSize;
|
|
|
|
|
else queue.rear++;
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>
|
|
|
|
|
int deQueue(SqQueue &queue) {
|
|
|
|
|
if (queue.rear == queue.front) return 0;
|
|
|
|
|
queue.data[queue.front] = NULL;
|
|
|
|
|
if ((queue.front+1)%MaxSize == 0 && (queue.front+1)%MaxSize < queue.rear)
|
|
|
|
|
queue.front = (queue.front+1)%MaxSize;
|
|
|
|
|
else queue.front++;
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
|
|
|
|
|
void selQueue(SqQueue queue) {
|
|
|
|
|
printf("[SELECT] <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>[ ");
|
|
|
|
|
for (int i = queue.front; i < queue.rear-1; ++i) {
|
|
|
|
|
printf("%d, ",queue.data[i]);
|
|
|
|
|
}
|
|
|
|
|
printf("%d ]\n",queue.data[queue.rear-1]);
|
|
|
|
|
printf("\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
|
int ch;
|
|
|
|
|
datatype e;
|
|
|
|
|
SqQueue queue;
|
|
|
|
|
InitQueue(queue);
|
|
|
|
|
Start:
|
|
|
|
|
printf("[INFO] <20><><EFBFBD>в˵<D0B2><CBB5><EFBFBD>\n");
|
|
|
|
|
printf("\t=========\n");
|
|
|
|
|
printf("\t1. <20><><EFBFBD><EFBFBD>\n");
|
|
|
|
|
printf("\t2. <20><><EFBFBD><EFBFBD>\n");
|
|
|
|
|
printf("\t3. <20><><EFBFBD>в<EFBFBD>ѯ\n");
|
|
|
|
|
printf("\t4. <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>\n");
|
|
|
|
|
printf("\t5. <20>Ƿ<EFBFBD><C7B7>ӿ<EFBFBD>\n");
|
|
|
|
|
printf("\t==========\n");
|
|
|
|
|
printf("\tѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>");
|
|
|
|
|
scanf_s("%d", &ch);
|
|
|
|
|
printf("\n");
|
|
|
|
|
|
|
|
|
|
switch (ch) {
|
|
|
|
|
case 1:
|
|
|
|
|
printf("[INSERT] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>");
|
|
|
|
|
scanf_s("%d", &e);
|
|
|
|
|
if (enQueue(queue,e)) printf("\t[INFO] <20><><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD>ɹ<EFBFBD>\n");
|
|
|
|
|
else printf("\t[INFO] <20><><EFBFBD>в<EFBFBD><D0B2><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|
|
|
|
printf("\n");
|
|
|
|
|
goto Start;
|
|
|
|
|
case 2:
|
|
|
|
|
if (deQueue(queue)) printf("[INFO] <20><><EFBFBD>ӳɹ<D3B3>\n");
|
|
|
|
|
else printf("[INFO] <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3>ӿգ<D3BF>\n");
|
|
|
|
|
printf("\n");
|
|
|
|
|
goto Start;
|
|
|
|
|
case 3:
|
|
|
|
|
selQueue(queue);
|
|
|
|
|
goto Start;
|
|
|
|
|
case 4:
|
|
|
|
|
if (isFull(queue))
|
|
|
|
|
printf("[SELECT] <20><><EFBFBD><EFBFBD>\n");
|
|
|
|
|
else
|
|
|
|
|
printf("[SELECT] δ<><CEB4>\n");
|
|
|
|
|
printf("\n");
|
|
|
|
|
goto Start;
|
|
|
|
|
case 5:
|
|
|
|
|
if (isEmpty(queue))
|
|
|
|
|
printf("[SELECT] <20>ӿ<EFBFBD>\n");
|
|
|
|
|
else
|
|
|
|
|
printf("[SELECT] δ<><CEB4>\n");
|
|
|
|
|
printf("\n");
|
|
|
|
|
goto Start;
|
|
|
|
|
default: break;
|
|
|
|
|
}
|
|
|
|
|
}
|