第四章 队列(笔记)

4.1-4.2

基本概念:

        有表首、表尾。

表首:也称队首,可进行删除操作

表尾:也称队尾,可进行插入操作

//函数NewQNode()产生一个新队列结点。
qlink NewQNode()
{
    return (qlink)malloc(sizeof(QNode));//转类型
}
//用指针实现的队列Queue定义如下
typedef struct lque *Queue;/*队列指针类型*/
typedef struct lque{  /*队列结构*//*队首、队尾*/
     qlink front; /*队首指针*/
     qlink rear; /*队尾指针*/
}Lqueue;

 

//函数QueueInit()通过将队首指针front和队尾指针rear置为空指针,创建一个空队列。
Queue QueueInit()
{

 Queue Q=(Queue)malloc(sizeof*Q); 
 Q->front=Q->rear=0;  //有队首、队尾且都要是空的,才有用
 return Q; 
}

 

//函数EnterQueue(x)先为元素x创建一个新结点,然后修改队列O的队尾结点指针,在队尾插入新结点,使新结点成为新队尾结点。
 void EnterQueue(QItem x,Queue Q)
{
     qlink p=NewQNode();/*创建一个新结点*/
     p->element=x;
     p->next=0; 
     /*队尾插入新结点*/ 
     if(Q->front)0->rear->next=p;/*队列非空*/ 
     elseQ->front=p;/*队列空*/ 
     Q->rear=p; //队列不管空不空都要指向p
}
//函数DeleteQueue(0)先将队首元素存于x中,然后修改队列o的队首结点指针使其指向队首结点的下一个结点,从而删除队首结点:最后返回x。

QItem DeleteQueue(Queue Q)
{/*前提:队列非空*/
        
    if(QueueEmpty(Q))exit(1); //这是一句判断句,结果为:假
    QItemx=Q->front->element/*头元素*/;/*将队首元素存于x中*/
    /*删除队首结点*/ 
    qlink p=Q->front; 
    Q->front=Q->front->next;
    free(p);
    return x;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值