4.6 队列实现及其应用(下)

目录

链式队列

创建空队列 :

判断队列空 :

出队    


链式队列

 typedef  int  data_t;

    typedef  struct  node_t {

            data_t data ;

            struct node_t   *next;

      } linknode_t,  *linklist_t;

                   typedef  struct   {

 linklist_t  front,  rear;

  } linkqueue_t;             

插入操作在队尾进行,删除操作在队头进行,由队头指针和队尾指针控制队列的操作。

创建空队列 :

linkqueue_t  *CreateQueue() {

      linkqueue_t  *lq  =  (linkqueue_t  *)malloc(sizeof(linkqueue_t));

      lq->front = lq->rear = (linklist_t)malloc(sizeof(linknode_t));

      lq->front->next = NULL ;      /*置空队*/

          return  lq;     /*返回队列指针*/

}

判断队列空 :

int   EmptyQueue(linkqueue_t  *lq)  {

   return ( lq->front  = =  lq->rear) ;

}

入队 : void  EnQueue (linkqueue_t *lq, data_t x)

{

      lq->rear->next = (linklist_t)malloc(sizeof(linknode_t)) ;

      lq->rear = lq->rear->next;          /*修改队尾指针*/

      lq->rear->data = x ;             /*新数据存入新节点*/

      lq->rear->next = NULL ;         /*新节点为队尾*/

           return;

}

出队    

 data_t  DeQueue(linkqueue_t  *lq) {

       data_t   x;

       linklist_t   p;           /*定义一个指向队头结点的辅助指针*/

       p = lq->front->next ;    /*将它指向队头结点*/

       lq->front->next = p->next ;     /*删除原先队头结点

       x = p->data;      free(p) ;     /*释放原队头结点*/

       if  (lq->front->next  ==  NULL)  lq->rear  =  lq->front;

       return  x; }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值