LinkQueue InitQueue isEmpty(Q) EnQueue DeQueue

#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LinkNode{
    ElemType data;
    struct LinkNode *next;
}LinkNode;
typedef struct{
    LinkNode *front,*rear;
}LinkQueue;
void InitQueue(LinkQueue &Q)
{
    Q.front=Q.rear=(LinkNode*)malloc(sizeof(LinkNode));             //为头结点申请空间,此时front,rear指针都指向头结点
    Q.front->next=NULL;                                             //头结点的next指向空
}
bool isEmpty(LinkQueue Q)                                           //判断链队列是否为空
{
    return Q.front==Q.rear;
}
void EnQueue(LinkQueue &Q,ElemType x)                               //入队
{
    LinkNode *pnew;                                                 //定义一个新结点
    pnew=(LinkNode*)malloc(sizeof(LinkNode));                       //为新结点申请空间
    pnew->data=x;
    pnew->next=NULL;                                                //新结点的next必须为空
    Q.rear->next=pnew;                                              //头结点的next指向新结点
    Q.rear=pnew;                                                    //使尾指针指向新的结点
}
bool DeQueue(LinkQueue &Q,ElemType &x)                              //出队
{
    if(isEmpty(Q))                                                  //首先判断链队列是否为空
{
        return false;
}
    LinkNode *q;                                                    //定义一个新指针
    q=Q.front->next;                                                //使新指针始终指向第一个结点
    x=q->data;                                                      //把第一个结点的值赋给形参x
    Q.front->next=q->next;                                          //断链
    if(Q.rear==q)
{
        Q.rear=Q.front;
}
    free(q);
    return true;
}
int main()
{
    LinkQueue Q;
    InitQueue(Q);                                                  //初始化链队列
    bool ret;
    ret=isEmpty(Q);                                                    //判空
    if(ret)
    {
        printf("LinkQueue is empty\n");
    }
    else{
        printf("LinkQueue is not empty\n");
    }
    EnQueue(Q,3);                                               //入队
    EnQueue(Q,4);
    EnQueue(Q,5);
    EnQueue(Q,6);
    EnQueue(Q,7);
    ElemType element;
    ret=DeQueue(Q,element);                                    //出队
    if(ret)
    {
        printf("DeQueue success element=%d\n",element);
    }
    else{
        printf("DeQueue failed\n");
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值