回环数组的实现 c语言
时间: 2023-10-12 09:16:43 浏览: 182
回环数组是一种特殊的数据结构,其最后一个元素和第一个元素相邻,形成一个环状结构。下面是在 C 语言中实现回环数组的示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 10
int main() {
int arr[MAX_SIZE], front = 0, rear = -1, count = 0;
int option, value;
do {
printf("\n\n Circular Queue MENU: \n");
printf("1. Insert\n2. Delete\n3. Display\n4. Exit\n");
printf("Enter your option: ");
scanf("%d", &option);
switch(option) {
case 1:
if(count == MAX_SIZE) {
printf("\nCircular Queue is full.\n");
break;
}
printf("Enter the value to be inserted: ");
scanf("%d", &value);
rear = (rear + 1) % MAX_SIZE;
arr[rear] = value;
count++;
printf("\n%d inserted successfully.\n", value);
break;
case 2:
if(count == 0) {
printf("\nCircular Queue is empty.\n");
break;
}
printf("\n%d deleted successfully.\n", arr[front]);
front = (front + 1) % MAX_SIZE;
count--;
break;
case 3:
if(count == 0) {
printf("\nCircular Queue is empty.\n");
break;
}
printf("\nCircular Queue is:\n");
for(int i = 0; i < count; i++) {
printf("%d ", arr[(front + i) % MAX_SIZE]);
}
printf("\n");
break;
case 4:
printf("\nExiting...\n");
break;
default:
printf("\nInvalid option. Please try again.\n");
break;
}
} while(option != 4);
return 0;
}
```
在此示例中,我们使用了一个数组 `arr` 来实现回环队列。数组的大小为 `MAX_SIZE`。变量 `front` 和 `rear` 分别表示队列前端和后端的位置,初始值为 0 和 -1,因为队列初始为空。变量 `count` 表示当前队列中元素的数量。
在 `Insert` 操作中,我们首先检查队列是否已满。如果是,就打印一条消息并退出。如果队列未满,则要求用户输入要插入的值,将 `rear` 的值增加 1(如果越界,就将其设置为 0)并将值插入到数组中。最后,将 `count` 的值增加 1。
在 `Delete` 操作中,我们首先检查队列是否为空。如果是,就打印一条消息并退出。如果队列不为空,则打印被删除的元素的值,将 `front` 的值增加 1(如果越界,就将其设置为 0)并将 `count` 的值减少 1。
在 `Display` 操作中,我们首先检查队列是否为空。如果是,就打印一条消息并退出。如果队列不为空,则遍历数组并打印所有元素的值。由于这是一个回环队列,我们需要使用 `(front + i) % MAX_SIZE` 来计算每个元素的实际位置。
最后,在 `Exit` 操作中,我们打印一条消息并退出程序。
阅读全文