📄 lxgraphl.cpp
字号:
// lxgraphl.cpp: implementation of the lxgraphl class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "lxgraphl.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
lxgraphl::lxgraphl(int numvert)
{
int i;
numvertex=numvert;
numedge=0;
mark = new int[numvert];
for(i=0;i<numvertex;i++)
mark[i]=0;
vertex=new lxlist*[numvertex];
for(i=0;i<=numvertex-1;i++)
vertex[i]= new lxlist(1);
}
lxgraphl::~lxgraphl()
{
int i;
delete [] mark;
for(i=0;i<=numvertex-1;i++)
delete vertex[i];
delete [] vertex;
}
int lxgraphl::n()
{
return numvertex;
}
int lxgraphl::e()
{
return numedge;
}
int lxgraphl::first(int v)
{
int t;
lxedge it;
vertex[v]->setStart();
if(vertex[v]->getValue(it)) {t =it.vertex;return it.vertex;}
else
return numvertex;
}
int lxgraphl::next(int v1, int v2)
{
lxedge it;
vertex[v1]->getValue(it);
if(it.vertex==v2) vertex[v1]->next();
else{
vertex[v1]->setStart();
while(vertex[v1]->getValue(it) && it.vertex<=v2)
vertex[v1]->next();
}
if(vertex[v1]->getValue(it)) {int t= it.vertex;return it.vertex;}
else return numvertex;
}
void lxgraphl::setedge(int v1, int v2, int wgt)
{
lxedge it(v2,wgt);
lxedge curr;
vertex[v1]->getValue(curr);
if(curr.vertex != v2)
for(vertex[v1]->setStart();vertex[v1]->getValue(curr);vertex[v1]->next())
if(curr.vertex>=v2) break;
if(curr.vertex==v2) vertex[v1]->remove(curr);
else numedge++;
vertex[v1]->insert(it);
lxedge it1(v1,wgt);
lxedge curr1;
vertex[v2]->getValue(curr1);
if(curr1.vertex != v1)
for(vertex[v2]->setStart();vertex[v2]->getValue(curr1);vertex[v2]->next())
if(curr1.vertex>=v1) break;
if(curr1.vertex==v1) vertex[v2]->remove(curr1);
vertex[v2]->insert(it1);
}
void lxgraphl::deledge(int v1, int v2)
{
lxedge curr;
vertex[v1]->getValue(curr);
if(curr.vertex != v2)
for(vertex[v1]->setStart();vertex[v1]->getValue(curr);vertex[v1]->next())
if(curr.vertex>=v2) break;
if(curr.vertex==v2) {
vertex[v1]->remove(curr);
numedge--;
}
vertex[v2]->getValue(curr);
if(curr.vertex != v1)
for(vertex[v2]->setStart();vertex[v2]->getValue(curr);vertex[v2]->next())
if(curr.vertex>=v1) break;
if(curr.vertex==v1) {
vertex[v2]->remove(curr);
}
}
int lxgraphl::weight(int v1, int v2)
{
lxedge curr;
vertex[v1]->getValue(curr);
if(curr.vertex != v2)
for(vertex[v1]->setStart();vertex[v1]->getValue(curr);vertex[v1]->next())
if(curr.vertex>=v2) break;
if(curr.vertex==v2)
return curr.weight;
else return 0;
}
int lxgraphl::getmark(int v)
{
return mark[v];
}
void lxgraphl::setmark(int v, int val)
{
mark[v]=val;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -