数据结构--队列和栈

队列
基于顺序表实现;
结构:
定义一个数组来存储数据;
头指针,尾指针;
在这里插入图片描述
相关操作:

typedef struct Queue {
    int *data;
    int head, tail, length;
} Queue;

Queue *init(int n) {  // 初始化队列
    Queue *q = (Queue *)malloc(sizeof(Queue));
    q->data = (int *)malloc(sizeof(int) * n); //初始化数组
    q->length = n;  // 初始化数组长度
    q->head = q->tail = 0; //开始时,头指针和尾指针都指向第一个元素
    return q;
}
void clear(Queue *q) {
    if (q == NULL) return ;
    free(q->data);
    free(q);  // 先释放队列中的数据,再释放队列
    return ;
}

int empty(Queue *q) {
    return q->head == q->tail; // 
}

int front(Queue *q) {  //打印输出队首元素
    return q->data[q->head];
}

int push(Queue *q, int val) {
    if (q == NULL) return 0;
    if (q->tail == q->length) return 0;
    q->data[q->tail++] = val;
    return 1;
}

int pop(Queue *q) {
    if (q == NULL) return 0;
    if (empty(q)) return 0;
    q->head += 1;
    return 1;
}

void output(Queue *q) {
    if (q == NULL) return ;
    printf("[");
    for (int i = q->head; i < q->tail; i++) {
        i != q->head && printf(",");
        printf("%d", q->data[i]);
    }
    printf("]\n");
    return ;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值