c语言有队列头文件吗,C语言顺序队列实现代码

seqqueue.h   //顺序队列头文件#ifndef __SEQQUEUE_H__

#define __SEQQUEUE_H__

#include

#include

#include

#define MAXSIZE 10

typedef int datatype; /*定义队列中数据元素的数据类型*/

typedef struct seqqueue{

datatype data[MAXSIZE]; //用数组作为队列的储存空间

int front,rear; /*指示队头位置和队尾位置的指针*/

}seq_queue,*seq_pqueue;

extern seq_pqueue init1_seqqueue(void); //创建队列

extern void init_seqqueue(seq_pqueue *Q); //创建队列(同上)

extern bool is_full_seqqueue(seq_pqueue q); //判断队列是否为满队列

extern bool is_empty_seqqueue(seq_pqueue q); //判断队列是否为空队列

extern bool in_seqqueue(datatype data,seq_pqueue q); //入队

extern bool out_seqqueue(seq_pqueue q,datatype *D); //出队

extern void show_seqqueue(seq_pqueue q); //从队头到队尾依次显示队列中的数据

extern void free_seqqueue(seq_pqueue q); //释放队列

#endif

seqqueue.h   //顺序队列相关函数的实现方法#include "seqqueue.h"

seq_pqueue init1_seqqueue(void) //创建队列

{

seq_pqueue q;

q=(seq_pqueue)malloc(sizeof(seq_queue));

if(q==NULL)

{

perror("malloc");

exit(-1);

}

q->front=q->rear=MAXSIZE-1;

return q;

}

void init_seqqueue(seq_pqueue *Q) //创建队列(同上)

{

*Q=(seq_pqueue)malloc(sizeof(seq_queue));

if((*Q)==NULL)

{

perror("malloc");

exit(-1);

}

(*Q)->front=(*Q)->rear=MAXSIZE-1;

return;

}

//判断队列是否满

bool is_full_seqqueue(seq_pqueue q)

{

if((q->rear+1)%MAXSIZE == q->front)

return true;

else

return false;

}

//入对

bool in_seqqueue(datatype data,seq_pqueue q)

{

//判断队列是否满

if(is_full_seqqueue(q)){

printf("队列已满!\n");

return false;

}

//入对

q->rear=(q->rear+1)%MAXSIZE;

q->data[q->rear]=data;

return true;

}

bool is_empty_seqqueue(seq_pqueue q) //判断队列是否为空队列

{

if(q->rear == q->front)

return true;

else

return false;

}

//出队

bool out_seqqueue(seq_pqueue q,datatype *D)

{

//判断队列是否空

if(is_empty_seqqueue(q)){

printf("队列已空!\n");

return false;

}

//出队

q->front=(q->front+1)%MAXSIZE;

*D=q->data[q->front];

return true;

}

void show_seqqueue(seq_pqueue q) //从队头到队尾依次显示队列中的数据

{

int i;

if(is_empty_seqqueue(q))

return;

//非空时,从对头打印到队尾

for(i=(q->front+1)%MAXSIZE;i!=(q->rear+1)%MAXSIZE;i=(i+1)%MAXSIZE)

{

printf("%d\t",q->data[i]);

}

printf("\n");

}

void free_seqqueue(seq_pqueue q) //释放队列

{

free(q);

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值