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

📄 gbas.h

📁 本程序主要用链表实现了蚁群算法
💻 H
字号:
/**************************************************************************
         
				           蚁群算法
    针对TSP问题
**************************************************************************/

#include"iostream.h"
#include"stdlib.h"

typedef struct path{
	int hnode;//head node
	int tnode;//tail node
	double value;//length from hnode to tnode
	struct path *next;
}*paths,path;//距离矩阵,如
		                  /*
							0   1   0.5 1
							1   0   1   1
							1.5 5   0   1
							1   1   1   0  */
paths p;

typedef struct link{
	int node;//节点
	struct link *next;
}*linklist,link;

//int Count=0;//城市数目



void InitPath(paths  &pt)
{   //构造一个空的链表。
	
	pt=(paths)malloc(sizeof(path));
	pt->value=0;
	pt->next=NULL;
}


void InsertPath(paths &pt,paths s)
{
	pt->value +=1;
	paths lp;
	lp=pt;
	while(lp->next !=NULL)
		lp=lp->next;
	s->next=NULL;
	lp->next=s;
}


double GetElem(int i,int j)
{
	paths pt;
	pt=p->next;
	while(pt!=NULL)
	{
		if(pt->hnode==i && pt->tnode==j)
			return pt->value;
		pt=pt->next;
	}
	return -1;
}

int PathLen(paths pt)
{
	int length=0;
	while(pt->next!=NULL)
	{
		length++;
		pt=pt->next;
	}
	return length;
}

void InitL(linklist &lt)
{   //构造一个空的链表。
	lt=(linklist)malloc(sizeof(link));
	lt->node=0;
	lt->next=NULL;
}


void InsertL(linklist &lt,linklist s)
{
//	lt->node+=1;
	linklist ll;
	ll=lt;
	while(ll->next !=NULL)
		ll=ll->next;
	s->next=NULL;
	ll->next=s;
}


int ListLen(linklist lt)
{
	int length=0;
	while(lt->next!=NULL)
	{
		length++;
		lt=lt->next;
	}
	return length;
}


void Clear(linklist &lt)
{	
	linklist ll;
	ll=lt->next;
	lt->node=0;
	lt->next=NULL;
	free(ll);

//	ll=(linklist)malloc(sizeof(link));
//	ll->node=0;
//	InsertL(lt,ll);
}


void ListCopy(linklist &a,linklist b)
{
	Clear(a);
	linklist lt;
	while(b->next!=NULL)
	{
		lt=(linklist)malloc(sizeof(link));
		lt->node=b->next->node;
		InsertL(a,lt);
		b=b->next;
	}
}

⌨️ 快捷键说明

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