zoukankan      html  css  js  c++  java
  • 【数据结构】2-2 队列问题

    就是简单的队列的实现,出队、入队等操作

    #include<iostream>
    using namespace std;
    template<class T>
    struct Node {
        T data;
        Node *next;
    };
    template<class T>
    class LinkQueue {
    private:
        Node<T> *front, *rear;
    public:
        LinkQueue();
        ~LinkQueue();
        void EnQueue(T x);        //将元素x入队
        T DeQueue();            //将队头元素出队
        T GetQueue();            //取队头元素
        bool Empty();            //判断链队列是否为空
        void print();            //打印队列
    };
    template<class T>
    LinkQueue<T>::LinkQueue()
    {
        Node<T> *s = new Node<T>();
        s->next = NULL;
        front = rear = s;
    }
    template<class T>
    void LinkQueue<T>::EnQueue(T x)
    {
        Node<T> *s = new Node<T>();
        s->data = x;
        s->next = NULL;
        rear->next = s;
        rear = s;
    }
    template<class T>
    T LinkQueue<T>::DeQueue()
    {
        T tem;                //存储数据        
        Node<T> *del;            //用来存放要删除的指针的地址
        if (front == NULL)
        {
            cout << "ERROR" << endl;
            exit(1);
        }
        tem = front->next->data;
        del = front->next;
        front->next = front->next->next;
        if (front->next == NULL)
        {
            rear = front;
        }
        delete del;
        return tem;
    }
    template<class T>
    T LinkQueue<T>::GetQueue()
    {
        if (front == NULL)
        {
            cout << "ERROR" << endl;
            exit(1);
        }
        T tem;
        tem = front->next->data;
        return tem;
    
    }
    template<class T>
    bool LinkQueue<T>::Empty()
    {
        if (front == NULL)
            return true;
        else
            return false;
    }
    template<class T>
    LinkQueue<T>::~LinkQueue()
    {
        Node<T> *p = front;
        while (p)
        {
            Node<T> *q = p;
            p = p->next;
            delete q;
        }
        front = rear = NULL;
    }
    template<class T>
    void LinkQueue<T>::print()
    {
        Node<T> *p = front->next;
        while (p)
        {
            cout << p->data << " ";
            p = p->next;
        }
        cout << endl;
    
    }

    测试代码:

    #include"queue.cpp"
    int main()
    {
        LinkQueue<int> test;
        int number;
        cout << "请输入队中元素个数并分别赋值:" << endl;
        cin >> number;
        for (int i = 0; i < number; i++)
        {
            int x;
            cin >> x;
            test.EnQueue(x);
        }
        cout << "取队头元素:" << test.GetQueue() << endl;
        cout << "打印队列:";
        test.print();
        cout << "队头:" << test.DeQueue() << "出队" << endl;
        test.print();
        system("pause");
        return 0;
    }
  • 相关阅读:
    关于自带的sql developer修改java.exe版本的解决办法
    过滤器-用动态代理解决全站乱码
    myeclipse 文件注释部分乱码问题
    xml&dom_sax&dom4j的常见操作
    JSTL报错Unable to read TLD "META-INF/c.tld" from JAR file "file.............................
    机器学习--模型分类--贝叶斯
    机器学习中---分类模型--决策树模型
    分类模型的评估
    导数
    贝叶斯--- 高斯贝叶斯//多项式贝叶斯//伯努利贝叶斯
  • 原文地址:https://www.cnblogs.com/robotpaul/p/9978087.html
Copyright © 2011-2022 走看看