用C语言中数组来实现队列
时间: 2024-01-21 11:05:36 浏览: 138
在C语言中,可以使用数组来实现队列。具体实现步骤如下:
1. 定义一个数组queue和两个变量front和rear,分别表示队列的头和尾。
```
#define MAXSIZE 100
int queue[MAXSIZE];
int front = 0, rear = -1;
```
2. 实现入队操作。当队列未满时,将元素插入队尾,并将rear指针向后移动一位。如果队列已满,则提示队列已满。
```
void enqueue(int data){
if(rear < MAXSIZE - 1){
queue[++rear] = data;
}
else{
printf("Queue is full!\n");
}
}
```
3. 实现出队操作。当队列非空时,将队头元素弹出并返回该元素的值,并将front指针向后移动一位。如果队列为空,则提示队列为空。
```
int dequeue(){
if(front <= rear){
return queue[front++];
}
else{
printf("Queue is empty!\n");
return -1;
}
}
```
4. 实现查看队头元素的操作。当队列非空时,返回队头元素的值。如果队列为空,则提示队列为空。
```
int peek(){
if(front <= rear){
return queue[front];
}
else{
printf("Queue is empty!\n");
return -1;
}
}
```
5. 实现判断队列是否为空的操作。如果front大于rear,则队列为空,否则队列非空。
```
int isempty(){
if(front > rear){
return 1;
}
else{
return 0;
}
}
```
6. 实现判断队列是否已满的操作。如果rear等于MAXSIZE-1,则队列已满,否则队列未满。
```
int isfull(){
if(rear == MAXSIZE-1){
return 1;
}
else{
return 0;
}
}
```
完整代码如下:
```
#include <stdio.h>
#define MAXSIZE 100
int queue[MAXSIZE];
int front = 0, rear = -1;
void enqueue(int data){
if(rear < MAXSIZE - 1){
queue[++rear] = data;
}
else{
printf("Queue is full!\n");
}
}
int dequeue(){
if(front <= rear){
return queue[front++];
}
else{
printf("Queue is empty!\n");
return -1;
}
}
int peek(){
if(front <= rear){
return queue[front];
}
else{
printf("Queue is empty!\n");
return -1;
}
}
int isempty(){
if(front > rear){
return 1;
}
else{
return 0;
}
}
int isfull(){
if(rear == MAXSIZE-1){
return 1;
}
else{
return 0;
}
}
int main(){
enqueue(1);
enqueue(2);
enqueue(3);
printf("Front element: %d\n", peek());
printf("Dequeuing element: %d\n", dequeue());
printf("Front element: %d\n", peek());
printf("Queue full: %s\n", isfull()?"true":"false");
printf("Queue empty: %s\n", isempty()?"true":"false");
return 0;
}
```
阅读全文