【数据结构】队列的链式实现

//链式队列定义及各类操作
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<stdbool.h>

typedef int ElemType;

typedef struct  LinkNode
{
    ElemType data;
    struct LinkNode *next;
} LinkNode;

typedef struct LinkQueue
{
    LinkNode *front, *rear;
} LinkQueue;

//初始化链式队列(带头节点)
void InitLinkQueue(LinkQueue Q){
    //初始时,front,rear指针都指向头节点
    Q.front = Q.rear = (LinkNode *)malloc(sizeof(LinkNode));
    Q.front->next = NULL;
}

//判断链式队列式是否为空(带头节点)
void IsEmptyLinkQueue(LinkQueue Q){
    if (Q.front == Q.rear)
        return true;
    else
        return false;
}

 //新元素e入链式队列(带头节点)
 void EnLinkQueque(LinkQueue Q, ElemType e){
     LinkNode *s = (LinkNode *)malloc(sizeof(LinkNode)); //申请内存空间
     if (s == NULL)
        return false; //内存空间申请失败
    s->data = e; //元素e存入节点s
    s->next = NULL; //新节点在队尾,尾指针指向NULL
    Q.rear->next = s; //新节点s插入到为指针rear之后
    Q.rear = s; //更新尾指针
 }

//元素出链式队列(带头节点)
void DeLinkQueue(LinkQueue Q, ElemType e){
    if (Q.front == Q.rear)
        return false; //对空
    LinkNode *temp = Q.front->next;
    e = temp->data;
    Q.front->next = temp->next;
    if (Q.rear == temp)
        Q.rear = Q.front;
    free(temp);
    return true;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值