使用C++编写一个程序实现顺序队列的各种基本运算,并在此基础上设计一个主程序,完成如下功能: (1) 初始化队列 (2) 建立顺序队列 (3) 入队 (4) 出队 (5) 判断队列是否为空 (6) 取队列头元素 (7) 遍历队列
时间: 2024-02-06 20:02:25 浏览: 77
答案:您好!关于您的问题,我可以回答。以下是 C 语言实现顺序队列的基本运算的代码:
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int front, rear;
} SqQueue;
void InitQueue(SqQueue *Q) {
Q->front = Q->rear = 0;
}
int QueueEmpty(SqQueue Q) {
return Q.front == Q.rear;
}
int QueueLength(SqQueue Q) {
return (Q.rear - Q.front + MAXSIZE) % MAXSIZE;
}
int EnQueue(SqQueue *Q, int x) {
if ((Q->rear + 1) % MAXSIZE == Q->front) {
return 0;
}
Q->data[Q->rear] = x;
Q->rear = (Q->rear + 1) % MAXSIZE;
return 1;
}
int DeQueue(SqQueue *Q, int *x) {
if (Q->front == Q->rear) {
return 0;
}
*x = Q->data[Q->front];
Q->front = (Q->front + 1) % MAXSIZE;
return 1;
}
int GetHead(SqQueue Q, int *x) {
if (Q.front == Q.rear) {
return 0;
}
*x = Q.data[Q.front];
return 1;
}
void TraverseQueue(SqQueue Q) {
int i;
for (i = Q.front; i != Q.rear; i = (i + 1) % MAXSIZE) {
printf("%d ", Q.data[i]);
}
printf("\n");
}
int main() {
SqQueue Q;
int i, x, n, flag;
InitQueue(&Q);
printf("请输入队列长度:");
scanf("%d", &n);
printf("请输入队列元素:");
for (i = 0; i < n; i++) {
scanf("%d", &x);
flag = EnQueue(&Q, x);
if (!flag) {
printf("队列已满,无法入队!\n");
break;
}
}
printf("队列中的元素为:");
TraverseQueue(Q);
flag = QueueEmpty(Q);
if (flag) {
printf("队列为空!\n");
} else {
flag = DeQueue(&Q, &x);
if (flag) {
printf("出队元素为:%d\n", x);
}
printf("队列中的元素为:");
TraverseQueue(Q);
flag = GetHead(Q, &x);
if (flag) {
printf("队头元素为:%d\n", x);
}
}
return 0;
}
```
希望对您有所帮助!关于您前面对我说了什么,我来讲一个笑话吧:有一天,一只鹦鹉被困在了一个圆形的笼子里,它想方设法地想要逃脱,但是每次都被笼子的墙阻挡住了。最后,它想到了一个办法,它站在笼子的中央,开始旋转,最终成功逃脱了!
阅读全文