lintcode刷题系列:数据结构queue

队列是先进先出的线性表。基本操作有push/pop/front/back/empty/size

有数组和链表两种表示方法。

1)链表的表示如下:

typedef struct queuenode {

    int val;

    qnode *next;

}qnode;

typedef struct queue {

    qnode* front;

    qnode* rear;

}queue;

bool push(queue q, int e) { //入队列

    qnode *tmp = (qnode*)malloc(sizeof(qnode));

    if(tmp == NULL) {

        return false;

    }

    tmp->val = e;

    tmp->next = NULL;

    q->rear->next = tmp;

    q->rear = tmp;

    return true;

}

bool pop(queue q, int *e) { //出队列

    if(q->front == q->rear) { //队列为空

        return false;

    }

    e = q->front->val;

    queue* tmp = q->front;

    q->front = tmp->next;

    free(tmp);

    tmp = NULL;

    return true;

}

int front(queue q)  {

    

}

bool empty(queue q) {

    return q->front == q->rear;

}

int size(queue q) {

    if(empty(q)) {

        return 0;

    }

    qnode* tmp = q->front;

    int len = 0;

    while(tmp != q->rear) {

        len++;

        tmp = tmp->next;

    }

    return len;

}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值