数据结构——loopQueue、

循环队列。

loopQueue.h

#include "loopqueue.h"

typedef struct queue
{
    int front;
    int rear;
    char *space;
    int len;
}Queue;

    void initQueue(Queue *q,int len);
    int isQueueFull(Queue *q);
    int isQueueEmpty(Queue *q);
    void enQueue(Queue *q, char ch);
    char deQueue(Queue *q);
    void clearQueue(Queue *q);
    void destoryQueue(Queue *q);

loopQueue.c

#include "loopqueue.h"
#include <stdlib.h>
#include <stdio.h>
#if 0
(1) q->space = malloc 空间
(2) q->front & rear 一开始要初始化到0。。编译器默认不知道数值跑哪去了
(3) rear & front ++ 的情况要注意 取模(循环结构常有)
(4) 静态空间  free时直接free(space)就好了、

#endif
void initQueue(Queue *q, int len)
{
    q->len = len;
    q->space = (char*)malloc( len * sizeof(char));// 究竟是谁开辟空间!!看好
    if(!q->space)
    {
        printf("over ");
        getchar();
    }
    q->front = q->rear = 0;
}
int isQueueFull(Queue *q)
{
    return (q->rear+1)%q->len == q->front;
}
int isQueueEmpty(Queue *q)
{
    return q->front == q->rear;
}
void enQueue(Queue *q, char ch)
{
    //入队
//    if(q->rear > q->len)
//        q->rear = q->rear%q->len;
//    q->space[q->rear] = ch;
//    q->rear = (q->rear+1)%q->len;
    //    q.space[q.rear] = ch;
    //    q.rear = (q.rear+1)%q.len;

    q->space[q->rear] = ch;
//    q->rear = (q->rear +1)%q->len;
    q->rear =  ++q->rear %q->len;
}
char deQueue(Queue *q)
{
    // return q->space[q->front++];没有考虑到模!!!!
    char ch = q->space[q->front];
    q->front = (q->front+1)%q->len;
    return ch;
}
void clearQueue(Queue *q)
{
    q->front = q->rear;
}
void destoryQueue(Queue *q)
{
    free(q->space);
}

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值