实现环形队列,实现入队出队操作:
cpp
#include <stdio.h>
#define MAXSIZE 10
int enterqueue(int* array, int);
void printQueue();
int front = 0, rear = 0;
int main(void) {
int arr[10] = { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1 };
printQueue(&arr);
enterqueue(&arr, 10);
printQueue(&arr);
enterqueue(&arr, 20);
printQueue(&arr);
enterqueue(&arr, 30);
printQueue(&arr);
enterqueue(&arr, 40);
printQueue(&arr);
enterqueue(&arr, 50);
printQueue(&arr);
enterqueue(&arr, 60);
printQueue(&arr);
enterqueue(&arr, 70);
printQueue(&arr);
enterqueue(&arr, 80);
printQueue(&arr);
enterqueue(&arr, 90);
printQueue(&arr);
exitQueue(&arr);
printQueue(&arr);
exitQueue(&arr);
printQueue(&arr);
exitQueue(&arr);
printQueue(&arr);
exitQueue(&arr);
printQueue(&arr);
enterqueue(&arr, 100);
printQueue(&arr);
enterqueue(&arr, 110);
printQueue(&arr);
printf("Hello World\n");
return 0;
}
/*入队函数*/
int enterqueue(int* array, int value) {
/*判断是否队满*/
if ((rear + 1) % MAXSIZE == front) {
printf("队满\r\n");
return 0;
}
rear = (rear + 1) % MAXSIZE;//rear指向下一位
array[rear] = value;
return 0;
}
/*出队函数*/
int exitQueue(int* array) {
if (rear == front) {
printf("队空\r\n");
return 0;
}
int temp = 0;
front = (front + 1) % MAXSIZE;
temp = array[front];
array[front] = -1;
return temp;
}
void printQueue(int* array) {
for (int k = 0; k < 10; k++) {
printf("arr[%d]=%d\r\n", k, *(array+k));
}
printf("\r\n");
}
进一步使用stm32进行缓冲数据实验