队列的使用及操作(顺序队列)

一:队列

1:先进先出

注释:在队尾插入,队头出队

2:逻辑结构:线性结构

3:存储结构:顺序结构

二:头文件

#ifndef _SEQUEUE_H__
#define _SEQUEUE_H__


#include <stdio.h>
#include <stdlib.h>
#define N 5
typedef int datatype;
typedef struct
{
	datatype data[N];//循环队列的数组
	int rear;//存数据端 rear 后面
	int front;//取数据端 front 前面
}sequeue_t;
//1.创建一个空的队列
sequeue_t *CreateEmptySequeue();
//2.入列 data代表入列的数据
int InSequeue(sequeue_t *p,datatype data);
//3.判断队列是否为满
int IsFullSequeue(sequeue_t *p);
//4.判断队列是否为空
int IsEmptySequeue(sequeue_t *p);
//5.出列 
datatype OutSequeue(sequeue_t *p);
//6.求队列的长度
int LengthSequeue(sequeue_t *p);
//7.清空队列函数
void ClearSequeue(sequeue_t *p);

#endif

 三:代码实现

#include"sequeue.h"

//1.创建一个空的队列
sequeue_t *CreateEmptySequeue()
{
    //开辟堆区空间
    sequeue_t *p=(sequeue_t *)malloc(sizeof(sequeue_t));
    if(p==NULL)
    {
        perror("开辟失败");
        return NULL;
    }
    //初始化
    p->rear=0;
    p->front=0;
    return p;
}

//2.入列 data代表入列的数据
int InSequeue(sequeue_t *p,datatype data)
{
    //判满
    if( IsFullSequeue(p))
    {
        perror("队满");
        return -1;
    }
    //将数据入列,然后在移动队尾
    p->data[p->rear]=data;
    p->rear=(p->rear+1)%N;
    return 0;
}

//3.判断队列是否为满
int IsFullSequeue(sequeue_t *p)
{
    return (p->rear+1)%N==p->front;
}
//4.判断队列是否为空
int IsEmptySequeue(sequeue_t *p)
{
    return p->front==p->rear==0;
}

//5.出列 
datatype OutSequeue(sequeue_t *p)
{
    //判空
    if(IsEmptySequeue(p))
    {
        perror("栈空");
        return -1;
    }
    //定义中间值存放数据
    int temp=p->data[p->front];
    p->front=(p->front+1)%N;
   return  temp;
}

//6.求队列的长度
int LengthSequeue(sequeue_t *p)
{
    if(p->rear>=p->front)
    return p->rear-p->front;
    else
    return p->rear-p->front+N;
}

//7.清空队列函数
void ClearSequeue(sequeue_t *p)
{
    p->rear=p->front=0;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值