📄 delvex.cpp
字号:
#include"traffic.h"
step Delvex(ALGraph &G)
{
int v = -1,error,delarc = 0,i;
CityName station;
ArcNode *p,*q;
openfile("head");
while(v == -1)
{
printf("which station do you want to delete?\n");
scanf("%s",station);
getchar();
v = LocateVex(G,station);
if( v == -1)
{
printf("There is no %s station\n",station);
error++;
if(error == MAXERROR)
{
openfile("error");
return NEXTSTEP;
}
}
}
delarc = 0;
for(i = 0;i < G.vexnum; i++)
{
if(i == v)
continue;
p = G.vertices[i].firstarc;
while(p)
{
if(p->adjvex>v)
p->adjvex--;
else if(p -> adjvex == v)
{
if(p == G.vertices[i].firstarc)
{
G.vertices[i].firstarc = p -> nextarc;
if(p -> Tool[0])
{
free(p -> Tool[0]);
p->Tool[0] = NULL;
}
if(p -> Tool[1])
{
free(p -> Tool[1]);
p->Tool[1] = NULL;
}
free(p);
p = G.vertices[i].firstarc;
delarc ++;
}//if(p == G.vertices[i].firstarc)
else
{
q -> nextarc = p -> nextarc;
if(p -> Tool[0])
{
free(p -> Tool[0]);
p->Tool[0] = NULL;
}
if(p -> Tool[1])
{
free(p -> Tool[1]);
p->Tool[1] = NULL;
}
free(p);
delarc ++;
p = q -> nextarc;
}
}//if(p -> adjvex == v)
else
{
q = p;
p = p -> nextarc;
}
}// while(p)
}// for(i = 0;i < G.vexnum; i++)
for(p = G.vertices[v].firstarc;p;) /*delete the arc of from v*/
{
q = p;
p = p -> nextarc;
if(q -> Tool[0])
{
free(q -> Tool[0]);
q ->Tool[0] = NULL;
}
if(q -> Tool[1])
{
free(q -> Tool[1]);
q ->Tool[1] = NULL;
}
free(q);
delarc ++;
}
G.vertices[v].firstarc = NULL;
for( i = v;i < G.vexnum-1; ++i)
{
strcpy(G.vertices[i].data,G.vertices[i+1].data);
G.vertices[i].firstarc = G.vertices[i+1].firstarc;
}
G.vertices[i].firstarc = NULL;
G.vexnum--;
G.arcnum -= delarc;
printf("delet success!!\n") ;
return NEXTSTEP;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -