队列小记三之链式存储

线性表的存储方式有顺序存储和链式存储,前两篇均是队列顺序存储的例子,以下是链式存储的代码:

#include <string.h>
#include <malloc/malloc.h>

struct Node {
    int data;
    struct Node *next;
};

struct Fifo {
    struct Node *front;
    struct Node *rear;
};
//初始化队列
void init(struct Fifo *fifo) {
    struct Node *node = (struct Node *)malloc(sizeof(struct Node));
    node->next = NULL;
    fifo->front = node;
    fifo->rear = node;
}
//进队
int put(struct Fifo *fifo, int value) {
    struct Node * node = (struct Node *)malloc(sizeof(struct Node));
    node->next = NULL;
    node->data = value;
    fifo->rear->next = node;
    fifo->rear = node;
    return 0;
}

//出队
int get(struct Fifo *fifo) {
    if (!fifo->front->next) {
        return -1;
    }
    struct Node* node = fifo->front->next;
    int value = node->data;
    fifo->front->next = node->next;

    free(node);
    node = NULL;
    return value;
}
//销毁队列
void destroy(struct Fifo *fifo) {
    while (fifo->front->next) {
        get(fifo);
    }
    free(fifo->front);
    fifo->front = NULL;
    fifo->rear = NULL;
}
//清空队列
void clear(struct Fifo *fifo) {
    while (fifo->front->next) {
        get(fifo);
    }
    fifo->rear = fifo->front;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值