⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lqueue.h

📁 蚁群算法求解聚类问题
💻 H
字号:

#if !defined(AFX_LQUEUE_H__5974EC62_97DC_4B1A_99ED_F71A370EB999__INCLUDED_)
#define AFX_LQUEUE_H__5974EC62_97DC_4B1A_99ED_F71A370EB999__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "link.h"

//  队列类模板
template <class Elem> class LQueue
{
public:
    CLink<Elem>* front;     // 指向队列第一各节点的指针
    CLink<Elem>* rear;      // 指向队列末尾节点的指针

	int size;              // 队列中元素总数

public:
	LQueue(void){
		front=NULL;
		rear=NULL;
		size=0;
	}
	
	~LQueue(void){
		clear();
	}
   
	
	void clear()    // 清空队列
	{         
		while(front != NULL)
		{ 
			rear = front;
			front = front->next;
			delete rear;
		}
		rear = NULL;
		size = 0;
	}

   
	bool enqueue(const Elem& it)   // 队列末尾新增节点
	{
		
		if (rear == NULL)   // 如果队列为空
			front = rear = new CLink<Elem>(it, NULL);
		else {              // 如果队列不为空
			rear->next = new CLink<Elem>(it, NULL);
			rear = rear->next;
		}
		 size++;
    return true;
	}
	
	
	bool dequeue(Elem& it)  // 删除队列中的节点,并返回所删除节点的值
	{ 
		if (size == 0) return false;    // 如果队列为空
		it = front->element;            // 记录要删除节点的值
		CLink<Elem>* ltemp = front;      // 记录删除的节点
		front = front->next;            // 将节点从队列中除去
		delete ltemp;                   // 删除节点
		if (front == NULL) rear = NULL; // 如果删除的节点是队列仅剩的节点
		size --;
		return true;
	}

	
	bool frontValue(Elem& it) const   // 返回队列中第一个节点的值
			{
		if (size == 0) return false;
		it = front->element;
		return true;
	}
	
	
	
	int length() const{ return size; }   // 返回队列长度


	bool is_outqueue(Elem& it)  // 判断包含所给值的节点是否在队列中
{	
		CLink<Elem> *temp;
	    temp=front;
	
	if (front==rear==NULL)
		return false;
	else 
	{
		while(temp)
		{
			if(it==temp->element )	return false;
			temp=temp->next;
		}
		return true;
	}
}



};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -