This repository has been archived on 2023-11-30. You can view files and clone it, but cannot push or open issues or pull requests.
DataStructure_ArrayQueue_C/main.cpp

111 lines
2.6 KiB
C++
Raw Normal View History

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;
}
}