静态数组实现队列

来源:互联网 发布:无锡行知技工学校 编辑:程序博客网 时间:2024/05/16 15:30
#include<stdio.h>
#include<stdlib.h>


#define QUEUE_TYPE int
/*队列元素的类型*/


void creat_queue(size_t size);
/*创建一个队列,这只适用于使用动态分配数组的队列,链式的不
需要,普通数组实现的队列在编译时就已经确定大小*/


void destroy_queue();
//销毁一个队列,这只适用于链式的和动态分配数组的队列,因为普通数组会被自动清栈。


void insert(QUEUE_TYPE value);


void delete();
//从队列里移除一个元素,并将其丢弃


QUEUE_TYPE first();
//返回队列的第一个元素值,但不删除
int is_empty();


int is_full();


头文件

//////////////////////////////////////////////////////////////////////////



#include<stdio.h> 
#include<stdlib.h>
#include"queue.h"


#define false 0
#define true 1


 
 //用一个普通数组(循环数组)实现队列
//数组的长短用#define 定义


#define QUEUE_SIZE 100
#define ARRAY_SIZE (QUEUE_SIZE+1)  //数组的长度


QUEUE_TYPE queue[ARRAY_SIZE];
size_t front = 1;
size_t rear = 0;


void insert(QUEUE_TYPE value)
{
if (!is_full())
{
rear = (rear + 1) % ARRAY_SIZE;
queue[rear] = value;
}


}


void delete()
{
if (!is_empty())
{
front = (front+1) % ARRAY_SIZE;
}
}


QUEUE_TYPE first()
{
if (!is_empty())
{
  return queue[front];
}
}


int is_empty()
{
return (rear+1) % ARRAY_SIZE==front;
}


//这时,队列里实际上没有真正满
int is_full()
{
{
return (rear + 2) % ARRAY_SIZE == front;
}


}








 int main()
{


insert(23);
insert(22);


insert(23);
insert(24);


int n= first();
printf("%d\n",n);
return 0;
}















 
0 0
原创粉丝点击