设队列的元素类型为char,实现顺序循环队列的各种基本操作的程序使用c语言
时间: 2023-06-03 16:03:54 浏览: 94
好的,我可以为您提供关于循环队列的基本操作的C语言代码。以下是代码:
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 //队列最大长度
typedef struct {
char data[MAXSIZE];
int front, rear; //分别指向队首和队尾位置
}SqQueue;
//初始化队列
void InitQueue(SqQueue *q){
q->front = q->rear = 0;
}
//判断队列是否为空
int IsEmpty(SqQueue q){
if(q.front == q.rear)
return 1;
return 0;
}
//入队
int EnQueue(SqQueue *q, char 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, char *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, char *x){
if(q.front == q.rear) //队列为空
return 0;
*x = q.data[q.front];
return 1;
}
//获取队列长度
int GetLength(SqQueue q){
return (q.rear - q.front + MAXSIZE) % MAXSIZE;
}
int main(){
SqQueue q;
char x, c;
InitQueue(&q);
printf("请输入字符,以#表示输入结束:\n");
while((c = getchar()) != '#')
EnQueue(&q, c);
printf("队列中的元素为:\n");
while(!IsEmpty(q)){
DeQueue(&q, &x);
printf("%c ", x);
}
printf("\n");
return 0;
}
```
以上是一个基本的循环队列的实现,包括了初始化队列、判断队列是否为空、入队、出队、获取队头元素以及获取队列长度等基本操作。
阅读全文