Я программирую на языке C для VC ++ 2008. Я моделирую adjList для реализации графа. Я могу легко добавить ребро между двумя вершинами и распечатать график.
и я хочу удалить ребро между двумя вершинами и снова напечатать график. что бы я ни делал, я не могу напечатать график после удаления края. я получаю 0xfeefee :( что это? и как я могу решить эту программу.
Моя функция удаления и функция печати графика показаны ниже.
void deleteEdge(Graph G, Vertex V, Vertex W)
{
Edge list,prev,temp;
list=V->list;
prev=NULL;
//
while(list!=NULL && list->to->value!=W->value){
prev=list;
list=list->next;
}
// have found the element.
if(list!=NULL){
temp=list;
// if first element of list is deleted.
if(prev==NULL)
list=list->next;
else
prev->next=list->next;
// reallocate.
free(temp);
}
}
void GRAPHprint(Graph G)
{
Vertex tmp;
Edge list;
for(tmp = G->head;tmp!=NULL;tmp=tmp->next)
{
fprintf(stdout,"V:%d\t",tmp->value);
list=tmp->list;
while(list!=NULL)
{
fprintf(stdout,"%d\t",list->to->value);
list=list->next;
}
fprintf(stdout, "\n");
}
system("pause");
}