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

📄 node.h

📁 Dijkstra算法及demo实现
💻 H
字号:

#ifndef _NODE_H_
#define _NODE_H_

#include <math.h>
#include <vector>
using namespace std;

///////////////////////////////////////////////////////////////////////////////////////////
//结点链表模板
template<class T>
class NodeList
{
public:
	NodeList(){};
	~NodeList(){m_pNodeList.clear();};

public:
	void PushNode(T pNode)
	{
		m_pNodeList.push_back(pNode);
	}

	T PopNode()
	{
		T p=(*m_pNodeList.back());
		m_pNodeList.pop_back();
		return p;
	}

	void RemoveNode(T pNode,bool bFree=false)
	{
		vector<T>::iterator iter;
		for(iter=m_pNodeList.begin();iter!=m_pNodeList.end();iter++)
		{
			if(*iter==pNode)
			{
				m_pNodeList.erase(iter);
				break;
			}
		}

		if(bFree) delete pNode;
	}

	void RemoveAllNode(bool bFree=false)
	{
		if(bFree)
		{
			vector<T>::iterator iter;
			for(iter=m_pNodeList.begin();iter!=m_pNodeList.end();iter++)
				delete (T*)(*iter);
		}
		m_pNodeList.clear();
	}

	T GetNode(long i) const
	{
		return (T)(m_pNodeList.at(i));
	}

	long GetNodeCount()
	{
		return (long)m_pNodeList.size();
	}

	void ReserveNode(long size=0)
	{
		if(size==0) size=(long)m_pNodeList.size();
		m_pNodeList.reserve(size);
	}
private:
	vector<T>         m_pNodeList;
};

#endif

⌨️ 快捷键说明

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