SqQueue循环队列的 顺序存储实现


//---循环队列----队列的顺序存储结构-----
#define MAX_QSIZE 100 // z最大队列长度

typedef int ElemType;

typedef struct {
    ElemType *base;
    int front; //头指针,若队列不空则指向队列头元素
    int rear;  //尾指针,若队列不空,指向队列尾元素的下一个元素
} SqQueue;

int
InitQueue(SqQueue &Q) {
    Q.base = (ElemType *)malloc(MAX_QSIZE * sizeof(ElemType));
    if (!Q.base) return -1; //存储分配失败
    Q.front = 0;
    Q.rear = 0;
    return 0;
}

int
QueueLength(SqQueue Q) {
    return(Q.rear - Q.front +MAX_QSIZE) % MAX_QSIZE;
}
/**
 *  插入元素 e 为Q的新的尾元素
 *
 *  @param Q
 *  @param e
 *
 *  @return -1 队列满; 0 成功
 */
int
EnQueue(SqQueue &Q, ElemType e) {
    if ((Q.rear +1) % MAX_QSIZE == Q.front)
        return -1;
    Q.base[Q.rear] = e;
    Q.rear = (Q.rear +1) %MAX_QSIZE;
    return 0;
}
/**
 *  若队列不空,则删除Q的队头元素,用e返回其值,并返回 1.
 *
 *  @param Q
 *  @param e
 *
 *  @return -1 失败; 0 成功
 */
int
Dequeue(SqQueue &Q ,ElemType &e) {
    if (Q.front == Q.rear) return -1;
    e = Q.base[Q.front];
    Q.front = (Q.front+1) % MAX_QSIZE;
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值