zoukankan      html  css  js  c++  java
  • 链式队列的实现

    QueueNode.h

    template <typename Type> class LinkQueue;
    
    template< class Type >
    class QueueNode
    {
    private:
        friend class LinkQueue<Type>;
        friend ostream& operator<<(ostream& out, const LinkQueue<Type>& q);  //函数要访问QueueNode的私有成员, 因此要在此声明
        QueueNode(const Type t, QueueNode<Type>*pnext=NULL):item(t), next(pnext){}
    
    private:
        Type item;
        QueueNode<Type>* next;
    };

    LinkQueue.h

    #include "QueueNode.h"
    
    template<typename Type>
    class LinkQueue
    {
        friend ostream& operator<<(ostream& out, const LinkQueue<Type>& q) //de
        {
            QueueNode<Type>* tmp = q.m_pfront;
            while(tmp!=NULL)
            {
                out<<tmp->item<<"-->";
                tmp = tmp->next;
            }
            cout<<"NULL"<<endl;
            return out;
        }
    public:
        LinkQueue():m_prear(NULL), m_pfront(NULL){};
    private:
        QueueNode<Type>* m_prear,* m_pfront;
    
    public:
        bool isEmpty() const
        {
            return m_pfront==NULL;
        }
    
        void Append(const Type t)
        {
            if (isEmpty())
            {
                m_pfront = m_prear = new QueueNode<Type>(t);
            }
            else
            {
                m_prear->next = new QueueNode<Type>(t);
                m_prear = m_prear->next;
            }
        }
    
        Type getFront() const
        {
            if(isEmpty())
            {
                cout<<"There is no elements!"<<endl;
                exit(1);
            }
            return m_pfront->item;
        }
    
        void popFront()
        {
            if (isEmpty())
            {
                cout<<"There is no elements!"<<endl;
            }
            QueueNode<Type>* tmp = m_pfront;
            m_pfront = m_pfront->next;
            delete tmp;
        }
    
        void clear()
        {
            QueueNode<Type>* tmp ;
            while(m_pfront)
            {
                tmp = m_pfront;
                m_pfront = m_pfront->next;
                delete tmp;
            }
        }
    
    };

    test.cpp

    #include<iostream>
    using namespace std;
    
    #include "LinkQueue.h"
    
    int main()
    {
        LinkQueue<int> linkQueueInt;
        linkQueueInt.Append(1);
        linkQueueInt.Append(2);
        linkQueueInt.Append(3);
        linkQueueInt.Append(4);
        linkQueueInt.Append(5);
    
        cout<<linkQueueInt<<endl;
    
    
    
    }
  • 相关阅读:
    codepen
    css3 animate
    dowebok 网站
    java第四次实验
    java第九周学习总结
    java第三次实验
    java第八周学习总结
    java第二次试验
    java第七周学习总结
    java第六周学习总结
  • 原文地址:https://www.cnblogs.com/aituming/p/4241312.html
Copyright © 2011-2022 走看看