#include<stdio.h>
#include<stdlib.h>
typedef int E;
typedef struct Queue* ArrQueue;
struct Queue{
E* arr;//数组
int capacity;//容量
int front;//队首
int rear;//队尾
};
//创建队列
//变量队列指针
int initQueue(ArrQueue queue)
{
queue->capacity=10;
queue->arr=malloc(sizeof(E) * queue->capacity);
if(queue->arr==NULL)
{
return 0;
}
queue->front=queue->rear=0;
return 1;
}
//入队
//变量队列指针,入队元素
int offerQueue(ArrQueue queue,E element)
{
//队列满了
if((queue->rear+1)%queue->capacity ==queue->front)
{
return 0;
}
queue->rear=(queue->rear+1)%queue->capacity;
queue->arr[queue->rear] = element;
return 1;
}
//出队
//变量队列指针
int pullQueue(ArrQueue queue)
{
if(isEmpty(queue))
{
queue->front = (queue->front+1)%queue->capacity;
return 1;
}
return 0;
}
//判断空队列
//变量队列指针
int isEmpty(ArrQueue queue)
{
if(queue->front==queue->rear)
{
return 0;
}
else
{
return 1;
}
}
//输出队列
//变量队列指针
void printqueue(ArrQueue queue)
{
printf("<<");
int i = queue->front;
do{
i =(i+1)%queue->capacity;
printf("%d",queue->arr[i]);
}while(i!=queue->rear);
printf("<<");
}
int main()
{
struct Queue queue;
initQueue(&queue);
for(int i = 0;i<5;i++)
{
offerQueue(&queue,i*100);
printf("\n");
printqueue(&queue);
pullQueue(&queue);
}
}
数据结构笔记(六)顺序表实现队列
于 2024-03-12 14:42:34 首次发布