队列的顺序存储
#define MAX_SIZE 1024
顺序队列结构体
typedef struct SEQUEUE{
void* data[MAX_SIZE];
int size
}Sequeue;
- 队列初始化
Sequeue* Init_Sequeue(){
Sequeue* queue=(Sequeue*)malloc(sizeof(Sequeue));
for(int i=0;i<MAX_SIZE;i++){
queue->data[i]=NULL;
}
queue->size=0;
return queue;
}
- 入队
void Push_Sequeue(Sequeue* queue,void* data){
//数组左边为对头
if(queue==NULL){
return;
}
if(data==NULL){
return;
}
if(queue->size=MAX_SIZE){
return;
}
queue->data[queue->size]=data;
queue->size++;
}
- 返回队头元素
void* Front_Sequeue(Sequeue* queue){
if(queue==NULL){
return NULL;
}
if(queue->size==0){
return NULL;
}
return queue->data[0];
}
- 出队
void Pop_Sequeue(Sequeue* queue){
//移动元素
if(queue==NULL){
return;
}
if(queue->size==0){
return;
}
//先从队头出
for(int i=0;i<queue->size-1;i++){
queue->data[i]=queue->data[i+1];
}
queue->size--;
}
- 返回队尾元素
void* Back_Sequeue(Sequeue* queue){
if(queue==NULL){
return NULL;
}
if(queue->size==0){
return NULL;
}
return queue->data[queue->size-1];
}
- 返回大小
int Size_Sequeue(Sequeue* queue){
if(queue==NULL){
return -1;
}
return queue->size;
}
- 清空队列
void Clear_Sequeue(Sequeue* queue){
if(queue==NULL){
return;
}
queue->size=0;
}
- 销毁
void FreeSpace_Sequeue(Sequeue* queue){
if(queue==NULL){
return;
}
free(queue);
}