📄 gbas.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=(linklist)malloc(sizeof(link));
lt->node=0;
lt->next=NULL;
}
void InsertL(linklist <,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 <)
{
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 + -