队列-链式储存

队列-链式储存

队列的链式储存其实就是线性表的单链表,只不过它要遵循列队的规则,只能尾进头出,我们把它简称为链队列。

首先,创建结构体和头文件等
#include <stdio.h>
#include <stdlib.h>

typedef struct Queue{
    int data;
    struct Queue *next;//创建指针指向下一个结点
}Queue;

复制代码
初始化队列
Queue *initQueue()
{
    Queue *queue = (Queue*)malloc(sizeof(Queue));//创建头结点。
    queue->next = NULL;
    return queue;
}

复制代码
进队列
Queue *enQueue(Queue * rear,int data)
{
    Queue *enElem = (Queue*)malloc(sizeof(Queue));//创建新的结点
    enElem->data = data;
    enElem->next = rear;
    rear->next = enElem;//从尾部插入
    rear = enElem;
    return rear;//返回尾部指针
}

复制代码
出队列

void deQueue(Queue *front,Queue *rear)
{
    if (front->next == NULL) {
        printf("队列为空");
        return ;
    }

    Queue *p = front->next;//首结点
    printf("%d", p->data);//出队列
    front->next = p->next;//将头结点指针,指向下一个结点地址
    if (rear == p) {//如果队尾指针等于队头指针,将队尾重新置为头结点。也就是空队列
        rear = front;
    }
    free(p);//释放指针
}

复制代码
应用
int main()
{
    Queue *front,*rear;
    rear = front = initQueue();
    rear = enQueue(rear,1);
    rear = enQueue(rear, 2);
    rear = enQueue(rear, 3);
    rear = enQueue(rear, 4);

    deQueue(front, rear);
    deQueue(front, rear);
    deQueue(front, rear);
    deQueue(front, rear);
    
    return 0;
}

复制代码
运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值