C语言的queue,额又来啦
函数名 |
参数 |
功能 |
isFull |
const queue |
判断队列是否已经满了 |
isEmpty |
const queue | 判断队列是否已经空 |
enqueue |
queue,x |
进队,x为插入的元素 |
dequeue |
queue,x |
出队,x为出队的元素 |
getLen |
const queue |
得到队中的数据个数 |
initqueue |
queue |
初始化队列,分配数据空间 |
release |
queue |
释放队的内存空间 |
队列的结构体的定义:
typedef struct{
int *base;
int front;
int rear;
} queue;
判断队空队满:
int isEmpty(const queue *s){
return s->front == s->rear;
}
// 少分配一个存储空间
int isFull(const queue *s){
return s->front == (s->rear + 1) % MAXSIZE;
}
入队:
// 入队操作
int enqueue(queue *s,int x){
if (isFull(s)){
return 0;
}else{
s->base[s->rear] = x;
s->rear = (s->rear + 1) % MAXSIZE;
return 1;
}
}
出队:
//出队操作
int dequeue(queue *s,int *x){
if(isEmpty(s)){
return 0;
}else{
*x = s->base[s->front];
s->front = (s->front + 1) % MAXSIZE;
return 1;
}
}
得到队的长度:
//求队的长度
int getLen(const queue *s){
return (s->rear - s->front+MAXSIZE)%MAXSIZE;
}
初始化队:
// 初始化队列
int initqueue(queue *s){
// 开辟MAXSIZE空间
s->base = (int *)malloc(sizeof(int) * MAXSIZE);
// 如果分配空间不成功
if(!s->base){
return 0;
}
s->front = 0;
s->rear = 0;
return 1;
}
销毁队:
//销毁队列
void release(queue *s){
free(s->base);
}
最后感谢您的阅读,更多的精彩内容,欢迎点击下方的搜索来阅读更多精彩文章。
JavaScript
程序猿小根
Java
程序
1.
2.
3.
程序猿小根
欢迎您的关注