• C++链式队列


    practice1.h

    #ifndef PRACTICE1_H_INCLUDED
    #define PRACTICE1_H_INCLUDED
    #include<iostream>
    
    template <class T>
    class Queue{
    public:
        Queue();//构造函数
        ~Queue();//析构函数
        bool isEmpty() const;//判断是否为空
        const T& getFront() const;//得到队首数据不删除
        void enqueue(const T& x);//进队列
        T dequeue();//删除队首数据 且得到队首数据
        void makeEmpty();//清空队列
    
    private:
    
        struct ListNode//结构体嵌套 也可以用友元类
        {
            T element;//数据域
            ListNode *next;//指针域
            ListNode(const T & theElement,ListNode *n=0)//构造函数
            :element(theElement),next(n) {}
    
        };
        ListNode *front;//对头指针
        ListNode *back;//队尾指针
    };
    template<class T>
    Queue<T>::Queue()
    {
        front=0;
        back=0;
    }
    template<class T>
    Queue<T>::~Queue()
    {
       makeEmpty();
    
    }
    template<class T>
    void Queue<T>::makeEmpty()
    {
      while(!isEmpty())
    
        dequeue();
    
    }
    template<class T>
    bool Queue<T>::isEmpty()const
    {
    
        return front==0;
    }
    template <class T>
    const T& Queue<T>::getFront() const
    {
    
        if(isEmpty())
        {
            throw "queue is empty";
        }
        return  front->element;
    }
    
    template<class T>
    void Queue<T> ::enqueue(const T & x)
    {
    
        if(isEmpty())
            back=front=new ListNode(x);
        else
            back=back->next=new ListNode(x);
    
    }
    
    template<class T>
    T  Queue<T>::dequeue()
    {
    
        T frontItem=getFront();
        ListNode *old=front;
        front=front->next;
        delete old;
        std::cout<<frontItem<<std::endl;
    }
    #endif // PRACTICE1_H_INCLUDED

    practice2.cpp

    #ifndef PRACTICE1_H_INCLUDED
    #define PRACTICE1_H_INCLUDED
    #include<iostream>
    
    template <class T>
    class Queue{
    public:
        Queue();//构造函数
        ~Queue();//析构函数
        bool isEmpty() const;//判断是否为空
        const T& getFront() const;//得到队首数据不删除
        void enqueue(const T& x);//进队列
        T dequeue();//删除队首数据 且得到队首数据
        void makeEmpty();//清空队列
    
    private:
    
        struct ListNode//结构体嵌套 也可以用友元类
        {
            T element;//数据域
            ListNode *next;//指针域
            ListNode(const T & theElement,ListNode *n=0)//构造函数
            :element(theElement),next(n) {}
    
        };
        ListNode *front;//对头指针
        ListNode *back;//队尾指针
    };
    template<class T>
    Queue<T>::Queue()
    {
        front=0;
        back=0;
    }
    template<class T>
    Queue<T>::~Queue()
    {
       makeEmpty();
    
    }
    template<class T>
    void Queue<T>::makeEmpty()
    {
      while(!isEmpty())
    
        dequeue();
    
    }
    template<class T>
    bool Queue<T>::isEmpty()const
    {
    
        return front==0;
    }
    template <class T>
    const T& Queue<T>::getFront() const
    {
    
        if(isEmpty())
        {
            throw "queue is empty";
        }
        return  front->element;
    }
    
    template<class T>
    void Queue<T> ::enqueue(const T & x)
    {
    
        if(isEmpty())
            back=front=new ListNode(x);
        else
            back=back->next=new ListNode(x);
    
    }
    
    template<class T>
    T  Queue<T>::dequeue()
    {
    
        T frontItem=getFront();
        ListNode *old=front;
        front=front->next;
        delete old;
        std::cout<<frontItem<<std::endl;
    }
    #endif // PRACTICE1_H_INCLUDED
  • 相关阅读:
    str_split 分隔中文出现乱码 替代函数
    PHP 浮点数 转化 整数方法对比 ceil,floor,round,intval,number_format
    php 判断字符串之间包含关系
    不解之谜
    正则匹配 特殊的 符号
    PHP 判断字符串 是否 包含另一个字符串
    PHP 删除 数组 指定成员
    HTML 权重标签的使用
    【PAT甲级】1094 The Largest Generation (25 分)(DFS)
    【PAT甲级】1093 Count PAT's (25 分)
  • 原文地址:https://www.cnblogs.com/libin123/p/10420138.html
Copyright © 2020-2023  润新知