链队列的算法操作

学习地址:http://blog.csdn.net/stpeace/article/details/8131634
#include<iostream>

using namespace std;

typedef struct QNode
{
         int data;
         struct QNode *next;
}QNode;

typedef struct 
{
      QNode *front;
      QNode *rear;
}LQode,*PQueue;     //链式队列类型定义

void initQueue(LQueue *&lqu)
{
     lqu=new LQueue;
     lqu->front=lqu->rear=NULL;//当队列中油一个元素时,front和rear指针都指向这个元素,没有元素时则都指向NULL
}

int QueueEmpty(LQueue *lqu)
{
       if(lqu->rear==NULL||lqu->front==NULL)
                return 1;
       else
                return 0;

        return 2;
}

void enQueue(LQueue *lqu,int x)
{
         QNode *p;//节点指针
         p=new QNode;
         p->data=x;
         p->next=NULL;

         if(lqu->rear==NULL)
         {
              lqu->front=lqu->rear=p;//是空,则他们都指向新建的节点
          }
          else
           {
                    lqu->rear->next=p;//先连接带队尾
                    lqu->rear=p;
           }
}

int deQueue(LQueue *lqu,int &x)
{
         QNode *p;
         if(lqu->rear==NULL)
          {
              return 0;
           }
           else
           {
              p=lqu->front;
           }

         if(lqu->front==lqu->rear)
         {
             lqu->front=lqu->rear=NULL;
         }
         else
         {
             lqu->front=lqu->front->next;//后移
         }
         x=p->data;
         delete p;


         return 1;
}

int main()
{
          PQueue PQueue1;
          initQueue(PQueue1);
          QueueEmpty(PQueue1);

          int a=3;
          enQueue(PQueue1,a);

          int b=0;
          deQueue(PQueue1,b);

          QueueEmpty(PQueue1);

          return 0;

}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盼盼编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值