• 大小: 313KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-22
  • 语言: 其他
  • 标签: CSTree  

资源简介

无向图的深度优先森林(孩子兄弟链表表示)

资源截图

代码片段和文件信息

#include“ALGraph.h“
#include 
#include 
#include
#include 
#include

using namespace std;
ALGraph::ALGraph()
{
vexNum = 0;
edgeNum = 0;
alGVersion = 0; // 默认无向图

}

ALGraph::~ALGraph()
{
this->empty();
}
void ALGraph::setVexNum(int vn)
{
vexNum = vn;
}
int ALGraph::getVexNum()
{
return vexNum;
}
void ALGraph::setEdgeNum(int en)
{
edgeNum = en;
}
int ALGraph::getEdgeNum()
{
return edgeNum;
}

void ALGraph::setALGVersion(int version)
{
alGVersion = version;
}
int ALGraph::getALGVersion()
{
return alGVersion;
}
void ALGraph::deleteEdge(int f int t)
{
// 要考虑 1 边不一定存在 2 删除的边的 to 节点在链表的 firstArc
VNode vex = this->vetices[f - 1];
ArcNode *arcNode = vex.getFirstArc();
ArcNode *BeforeArcNode = new ArcNode();
int isfirst = 1;
while (arcNode && !(arcNode->getAdjvex() == t))
{
isfirst = 0;
BeforeArcNode = arcNode;
arcNode = BeforeArcNode->getNextarc();

}
if (arcNode) // 边是存在的
{

vetices[t - 1].setIn(vetices[t - 1].getIn() - 1);
vetices[f - 1].setOut(vetices[f - 1].getOut() - 1);

if (isfirst) // firstArc
{
vex.setFirstArc(arcNode->getNextarc());
}
else
{
BeforeArcNode->setNextarc(arcNode->getNextarc());
}
this->setEdgeNum(this->edgeNum - 1);
delete arcNode;
if (!this->alGVersion) // 无向图
{
vex = this->vetices[t - 1];
arcNode = vex.getFirstArc();
BeforeArcNode = new ArcNode();
isfirst = 1;
while (arcNode && !(arcNode->getAdjvex() == f))
{
isfirst = 0;
BeforeArcNode = arcNode;
arcNode = BeforeArcNode->getNextarc();
}
if (arcNode) // 边是存在的
{
vetices[f - 1].setIn(vetices[f - 1].getIn() - 1);
vetices[t - 1].setOut(vetices[t - 1].getOut() - 1);
if (isfirst) // firstArc
{
vex.setFirstArc(arcNode->getNextarc());
}
else
{
BeforeArcNode->setNextarc(arcNode->getNextarc());
}
delete arcNode;
}
}
}
}

void ALGraph::deleteVex(int delVex)
{
VNode *vex = &(this->vetices[delVex - 1]);
ArcNode *arcNode = vex->getFirstArc();
ArcNode *BeforeArcNode = new ArcNode();

while (arcNode)
{
// 从链表的第一个 arcNode 开始删
int adjVex = arcNode->getAdjvex();
vetices[adjVex - 1].setIn(vetices[adjVex - 1].getIn() - 1);

BeforeArcNode = arcNode;
vex->setFirstArc(BeforeArcNode->getNextarc());
arcNode = BeforeArcNode->getNextarc();
delete BeforeArcNode;
if (!this->alGVersion) // 无向图
{
this->deleteEdge(adjVex delVex);
}
}
vex->setVNum(0); //在数组中 删除节点
vex->setIn(-1) ;
vex->setOut(-1) ;
this->vexNum--;
}

void ALGraph::addEdge(int f int t int w)
{
// 找到起点的链接链表 
ArcNode *newArcNode = new ArcNode(t w);
VNode *vnodeF = new VNode()  *vnodeT = new VNode();
vnodeF = &(vetices[f - 1]);
vnodeT = &(vetices[t - 1]);
vnodeF->setOut(vnodeF->getOut() + 1);
vnodeT->setIn(vnodeT->getIn() + 1) ;
newArcNode->setNextarc(vnodeF->getFirstArc());
vno

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      15779  2016-09-05 14:41  cstree\ALGraph.cpp

     文件       1416  2016-09-05 13:58  cstree\ALGraph.h

     文件         82  2016-09-05 20:46  cstree\ALGraph.txt

     文件        516  2016-08-14 15:36  cstree\arcNode.cpp

     文件        469  2016-09-01 16:24  cstree\ArcNode.h

     文件        585  2016-09-05 14:42  cstree\CSNode.h

     文件          2  2016-09-05 14:45  cstree\CSTree.cpp

     文件        413  2016-09-05 14:48  cstree\CSTree.h

     文件       8290  2016-09-05 15:00  cstree\cstree.vcxproj

     文件       2407  2016-09-05 15:00  cstree\cstree.vcxproj.filters

     文件        476  2016-09-05 20:41  cstree\cstree1.cpp

     文件     555410  2016-09-05 20:46  cstree\Debug\ALGraph.obj

     文件      31598  2016-09-05 14:38  cstree\Debug\arcNode.obj

     文件        147  2016-09-05 20:46  cstree\Debug\cstree.log

     文件       2295  2016-09-05 14:46  cstree\Debug\CSTree.obj

     文件       4266  2016-09-05 20:46  cstree\Debug\cstree.tlog\CL.command.1.tlog

     文件      52704  2016-09-05 20:46  cstree\Debug\cstree.tlog\CL.read.1.tlog

     文件       7372  2016-09-05 20:46  cstree\Debug\cstree.tlog\CL.write.1.tlog

     文件        205  2016-09-05 20:46  cstree\Debug\cstree.tlog\cstree.lastbuildstate

     文件       1960  2016-09-05 20:46  cstree\Debug\cstree.tlog\link.command.1.tlog

     文件       3824  2016-09-05 20:46  cstree\Debug\cstree.tlog\link.read.1.tlog

     文件       1104  2016-09-05 20:46  cstree\Debug\cstree.tlog\link.write.1.tlog

     文件     183234  2016-09-05 20:46  cstree\Debug\cstree1.obj

     文件      30991  2016-09-05 20:46  cstree\Debug\main.obj

     文件     502784  2016-09-05 20:46  cstree\Debug\vc140.idb

     文件     520192  2016-09-05 20:46  cstree\Debug\vc140.pdb

     文件      36751  2016-09-05 14:38  cstree\Debug\VNode.obj

     文件        657  2016-09-05 14:38  cstree\main.cpp

     文件        966  2016-08-18 12:45  cstree\VNode.cpp

     文件        701  2016-09-01 16:24  cstree\VNode.h

............此处省略6个文件信息

评论

共有 条评论

相关资源