zoukankan      html  css  js  c++  java
  • C++ 链队列基本算法实现

    C++ 链队列基本算法实现

    #ifndef LinkQueue_h
    #define LinkQueue_h
    #include <iostream>
    template <class T>
    struct Node{
        T data;
        struct Node <T> * next;
    };
    template <class T>
    class LinkQueue{
    public:
        LinkQueue(){
            front = rear = new Node <T>;
            front -> next = NULL;
        }
        ~LinkQueue();
        void EnQueue(T x);
        T DeQueue();
        int GetLength();
        T GetFront();
        bool Empty(){return front == rear? true : false;}
    private:
        Node<T> * front;
        Node<T> * rear;
    };
    template <class T>
    void LinkQueue<T>::EnQueue(T x){
        rear->next = new Node<T>;
        rear = rear->next;
        rear->data = x;
        rear->next = NULL;
    }
    template<class T>
    T LinkQueue<T>::DeQueue(){
        Node<T> *p = front ->next;
        if(!p)throw "Underflow";
        front->next = p->next;
        T x = p->data;
        delete p;
        if(!(front->next)) rear = front;
        return x;
        
    }
    template <class T>
    T LinkQueue<T>::GetFront(){
        if(!front->next) throw "overflow";
        return front->next->data;
    }
    template <class T>
    LinkQueue<T> :: ~LinkQueue(){  //包括源节点的释放
        while(front){
            rear = front->next;
            delete front;
            front = rear;
        }
    }
    template<class T>
    int LinkQueue<T>::GetLength(){
        Node<T> *p = front->next;
        int j = 0;
        while(p){
            j++;
            p = p->next;
            
        }
        return j;
    }
    #endif /* LinkQueue_h */
  • 相关阅读:
    Apollo与ROS
    QT windeployqt
    自定义QGraphicsItem
    ROS与C++
    aptitude与apt-get
    解决tcp粘包问题
    网络中两台主机通信
    I/O多路复用之select、poll、epoll
    Nginx命令行控制
    C++11
  • 原文地址:https://www.cnblogs.com/ycbeginner/p/10006427.html
Copyright © 2011-2022 走看看