zoukankan      html  css  js  c++  java
  • 链队

        今天,我们一起用C++写一个链对,具体如下所示。

    LinkQueue.h具体内容如下:

    #include "QueueNode.h"
    template<typename Type> class LinkQueue{
    public:
    	LinkQueue() :m_prear(NULL), m_pfront(NULL){}
    	~LinkQueue(){
    		MakeEmpty();
    	}
    	void Append(const Type item);   //insert data
    	Type Delete();                  //delete data
    	Type GetFront();                //get data
    	void MakeEmpty();               //make the queue empty
    	void Print();                   //print the queue
    
    	bool IsEmpty() const{
    		return m_pfront == NULL;
    	}
    
    private:
    	QueueNode<Type> *m_prear, *m_pfront;
    };
    
    template<typename Type> void LinkQueue<Type>::MakeEmpty(){
    	QueueNode<Type> *pdel;
    	while (m_pfront){
    		pdel = m_pfront;
    		m_pfront = m_pfront->m_pnext;
    		delete pdel;
    	}
    }
    
    template<typename Type> void LinkQueue<Type>::Append(const Type item){
    	if (m_pfront == NULL){
    		m_pfront = m_prear = new QueueNode<Type>(item);
    	}
    	else{
    		m_prear = m_prear->m_pnext = new QueueNode<Type>(item);
    	}
    }
    
    template<typename Type> Type LinkQueue<Type>::Delete(){
    	if (IsEmpty()){
    		cout << "There is no element!" << endl;
    		exit(1);
    	}
    	QueueNode<Type> *pdel = m_pfront;
    	Type temp = m_pfront->m_data;
    	m_pfront = m_pfront->m_pnext;
    	delete pdel;
    	return temp;
    }
    
    template<typename Type> Type LinkQueue<Type>::GetFront(){
    	if (IsEmpty()){
    		cout << "There is no element!" << endl;
    		exit(1);
    	}
    	return m_pfront->m_data;
    }
    
    template<typename Type> void LinkQueue<Type>::Print(){
    	QueueNode<Type> *pmove = m_pfront;
    	cout << "front";
    	while (pmove){
    		cout << "--->" << pmove->m_data;
    		pmove = pmove->m_pnext;
    	}
    	cout << "--->rear" << endl << endl << endl;
    }
    QueueNode.h具体内容如下:

    template<typename Type> class LinkQueue;
    
    template<typename Type> 
    class QueueNode
    {
    private:
    	friend class LinkQueue < Type > ;
    	QueueNode(const Type item, QueueNode<Type> *next = NULL)
    		:m_data(item), m_pnext(next){}
    private:
    	Type m_data;
    	QueueNode<Type> *m_pnext;
    };
    main.cpp具体内容如下:

    #include <iostream>
    using namespace std;
    #include "LinkQueue.h"
    int main(){
    	LinkQueue<int> queue;
    	int init[10] = { 1, 3, 6, 8, 9, 2, 0, 5, 4, 7 };
    	for (int i = 0; i < 10; i++){
    		queue.Append(init[i]);
    	}
    	queue.Print();
    	queue.Delete();
    	queue.Print();
    	cout << queue.GetFront() << endl;
    	queue.Print();
    	queue.MakeEmpty();
    	queue.Print();
    	queue.Delete();
    	cin.get();
    	return 0;
    }
    运行效果如图1所示:

    图1 运行效果

  • 相关阅读:
    初学 python 之 多级菜单实现原理
    初学 python 之 用户登录实现过程
    Sqlmap使用教程
    对伪静态网站实施注射
    干货!IT小伙伴们实用的网站及工具大集合!持续更新!
    lnmp、lamp、lnmpa一键安装包(Updated: 2016-4-12)
    如何入门 Python 爬虫?
    在Windows Live Writer中插入C# code
    IIS装好后,局域网不能访问
    修改win7登录界面
  • 原文地址:https://www.cnblogs.com/new0801/p/6176918.html
Copyright © 2011-2022 走看看