zoukankan      html  css  js  c++  java
  • C++链式队列

    LinkQueue:

    //链式队列
    #include<iostream>
    using namespace std;
    typedef int elemType;
    
    struct QNode
    {
        elemType data;
        QNode *next;
    };
    
    struct LinkQueue
    {
        QNode *front;
        QNode *rear;
    };
    
    //初始化
    void InitQueue(LinkQueue *q)
    {
        q->front = q->rear = new QNode;
        q->front->next = NULL;
    }
    
    //插入元素e为队列新的队尾元素
    void EnQueue(LinkQueue *q, elemType e)
    {
        QNode *p = new QNode;
        p->data = e;
        p->next = NULL;
        q->rear->next = p;
        q->rear = p;
    }
    
    //删除队友元素,并打印其值
    void DeQueue(LinkQueue *q)
    {
        QNode *p = q->front->next;
        if(q->front==q->rear)
            cout<<"队列为空"<<endl;
        else
        {
            elemType x = p->data;
            cout<<"删除队头元素: "<<x<<endl;
            q->front->next = p->next; 
            if(q->rear == p)
                q->rear = q->front;
            delete p;
        }
    }
    
    //遍历队列
    void TraQueue(LinkQueue *q)
    {
        QNode *p = q->front->next;
        int i = 1;
        if(q->front==q->rear)
            cout<<"队列为空"<<endl;
        else
        {
            while(p!=q->rear)
            {
                cout << i <<":	"<<p->data<<endl;
                p = p->next;
                i++;
            }
            cout << i <<":	"<<q->rear->data<<endl;
        }
    }
    
    //清空队列
    void ClearQueue(LinkQueue *q)
    {
        if(q->front==q->rear)
            cout<<"出错,队列已经为空"<<endl;
        else
        {
            q->rear->next = q->front;
            delete(q->front);
            q->front = q->rear;
        }
    }
    
    //求队列长度
    int LengthQueue(LinkQueue *q)
    {
        QNode *p = q->front->next;
        int length = 0;
        if(q->front!=q->rear)
        {
            while(p)
            {
                length++;
                p = p->next;
            }
        }
        return length;
    }
    
    int main()
    {
        LinkQueue q;
        InitQueue(&q);
        for(int i=1;i<7;i++)
            EnQueue(&q,i);
        int length = LengthQueue(&q);
        cout <<"队列长度为: "<< length <<endl;
        TraQueue(&q);
        cout<<endl;
    
        DeQueue(&q);
        TraQueue(&q);
        cout<<endl;
    
        for(int i=0;i<5;i++)
            DeQueue(&q);
        TraQueue(&q);
        cout<<endl;
    
        return 0;
    }
  • 相关阅读:
    Chapter 03—Getting Started with graphs
    设置颜色的函数:rgb,hsv,color palettes
    plot()与dev 函数族的使用
    attach()与detach()的使用
    Chapter 02—Creating a dataset(Part3-补充材料Stat/Transfer)
    Chapter 02—Creating a dataset(Part2)
    Chapter 02—Creating a dataset(Part1)
    网络七层协议的通俗理解
    使用Git将本地项目上传到码云
    如何在Idea中使用Git将项目代码上传到码云
  • 原文地址:https://www.cnblogs.com/jx-yangbo/p/4857779.html
Copyright © 2011-2022 走看看