zoukankan      html  css  js  c++  java
  • c++实现的链队列(动态队列)

    链队列类源码:

    #pragma once
    
    template <class T>
    class QueueNode
    {
    public:
        T element;
        QueueNode<T> *next;  
    };
    
    template <class T>
    class LinkQueue
    {
    public:
    
        LinkQueue(void)
        {
            front = new QueueNode<T>();
            rear = new QueueNode<T>();
            front->next = NULL;
            rear->next = front;
        }
    
        void in(T obj)
        {
            QueueNode<T> *newNode = new QueueNode<T>();
            newNode->element = obj;
            newNode->next = NULL;
            rear->next->next = newNode;
            rear->next = newNode;
        }
    
        T out()
        {
            if(!IsEmpty())
            {
                QueueNode<T> *topNode = front->next;
                
                if(topNode->next==NULL) 
                {
                    //此时topNode为最后一个节点,front和rear的next都指向它,取出topNode后队列变为空,链队变回到初始状态
    
                    front->next = NULL;
                    rear->next = front;
                }
                else
                    front->next = topNode->next;
    
                T temp = topNode->element;
    
                delete(topNode);
    
                return temp;
            }
            else
                return NULL;
        }
    
        bool IsEmpty()
        {
            if(front->next==NULL)
                return true;
            else
                return false;
        }
    
        ~LinkQueue(void)
        {
        }
    
    private:
        QueueNode<T> *front;
        QueueNode<T> *rear;
    };
    View Code


    测试代码:

    //链队列
        LinkQueue<int> * queue2 = new LinkQueue<int>();
        queue2->in(3);queue2->in(2);queue2->in(7);queue2->in(6);
        queue2->in(8);queue2->in(5);queue2->in(4);queue2->in(1);
        while(!queue2->IsEmpty())
        {
            std::cout<<queue2->out()<<" ";
        }
  • 相关阅读:
    原生js中,call(),apply(),bind()三种方法的区别
    jQuery回溯!!!!!!!
    java中异常类与类别
    Java 多线程(并发)
    Java中反射与常用方法
    漫谈计算机构成
    java语言特性(相比C++)
    初级排序算法学习笔记
    java中参数传递
    关于类的知识
  • 原文地址:https://www.cnblogs.com/xiayangqiushi/p/3339785.html
Copyright © 2011-2022 走看看