void Queue() { int n; do { printf("\n"); printf("*************队列的基本操作及应用**************\n"); printf("* 1 入列 *\n"); printf("* 2 出列 *\n"); printf("* 3 取队头元素 *\n"); printf("* 4 取队尾元素 *\n"); printf("* 5 应用 *\n"); printf("* 6 退出 *\n"); printf("***********************************************\n"); printf("请选择:"); scanf("%d", &n); switch (n) { case 1: printf("---------入列-------"); break; case 2: printf("---------出列-------"); break; case 3: printf("---------取队头元素-------"); break; case 4: printf("---------取队尾元素-------"); break; case 5: printf("---------应用-------"); break; case 6:break; default: printf("ERROR!"); break; } } while (n != 6);实现入列,出列,取队头元素,取队尾元素
时间: 2023-07-06 17:43:52 浏览: 64
浅析A*算法在搜索最短路径的应用
好的,下面是队列的基本操作代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义队列的最大容量
typedef struct {
int data[MAXSIZE]; // 存放队列元素的数组
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 初始化队列
void InitQueue(Queue *q) {
q->front = q->rear = 0;
}
// 判断队列是否为空
int IsEmpty(Queue *q) {
return q->front == q->rear;
}
// 判断队列是否已满
int IsFull(Queue *q) {
return (q->rear + 1) % MAXSIZE == q->front;
}
// 入队操作
void EnQueue(Queue *q, int x) {
if (IsFull(q)) {
printf("队列已满,无法入队!\n");
return;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAXSIZE;
}
// 出队操作
void DeQueue(Queue *q) {
if (IsEmpty(q)) {
printf("队列为空,无法出队!\n");
return;
}
q->front = (q->front + 1) % MAXSIZE;
}
// 取队头元素
int GetHead(Queue *q) {
if (IsEmpty(q)) {
printf("队列为空,无法取队头元素!\n");
return -1;
}
return q->data[q->front];
}
// 取队尾元素
int GetTail(Queue *q) {
if (IsEmpty(q)) {
printf("队列为空,无法取队尾元素!\n");
return -1;
}
return q->data[(q->rear - 1 + MAXSIZE) % MAXSIZE];
}
int main() {
Queue q;
InitQueue(&q); // 初始化队列
int n;
do {
printf("\n");
printf("*************队列的基本操作及应用**************\n");
printf("* 1 入列 *\n");
printf("* 2 出列 *\n");
printf("* 3 取队头元素 *\n");
printf("* 4 取队尾元素 *\n");
printf("* 5 应用 *\n");
printf("* 6 退出 *\n");
printf("***********************************************\n");
printf("请选择:");
scanf("%d", &n);
switch (n) {
case 1:
printf("请输入要入队的元素:");
int x;
scanf("%d", &x);
EnQueue(&q, x);
break;
case 2:
DeQueue(&q);
break;
case 3:
printf("队头元素为:%d\n", GetHead(&q));
break;
case 4:
printf("队尾元素为:%d\n", GetTail(&q));
break;
case 5:
printf("暂无应用!\n");
break;
case 6:
break;
default:
printf("输入有误,请重新输入!\n");
break;
}
} while (n != 6);
return 0;
}
```
这段代码中,我们使用结构体 `Queue` 来表示队列,包含了队列的元素数组 `data`、队头指针 `front` 和队尾指针 `rear`。队列的基本操作包括:初始化队列、判断队列是否为空、判断队列是否已满、入队操作、出队操作、取队头元素和取队尾元素。在 `main()` 函数中,我们通过 `do-while` 循环来不断进行用户交互,根据用户选择的不同操作调用相应的函数来实现队列的基本操作。
阅读全文