#include <stdio.h>
#include <stdlib.h>
typedef int NODE;
struct EDGE {
NODE nodo1; //primo nodo dell'arco
NODE nodo2; //altro nodo dell'arco
struct EDGE *next; //successivi archi
};
typedef struct EDGE* EDGELIST;
void deleteArco(EDGELIST* t, NODE x, NODE y){
if ((*t) != NULL) {
if( (*t)->nodo1 == x && (*t)->nodo2 == y){
EDGELIST p = (*t);
(*t) = (*t)->next;
}else
deleteArco(&(*t)->next, x, y);
}
}
void insertArco(EDGELIST* t, NODE x, NODE y){
EDGELIST e
= (EDGELIST
)malloc(sizeof(struct EDGE
)); e->nodo1 = x;
e->nodo2 = y;
e->next = *t;
*t = e;
}
void printEdgeList(EDGELIST t){
while(t != NULL) {
printf("%d->%d\n", t
->nodo1
, t
->nodo2
); t = t->next;
}
}
int main(void) {
EDGELIST t = NULL;
insertArco(&t, 1, 2);
insertArco(&t, 2, 1);
insertArco(&t, 3, 1);
insertArco(&t, 3, 5);
printEdgeList(t);
deleteArco(&t, 2, 1);
printEdgeList(t);
puts("\nDeleting 2->5 (not in list)"); deleteArco(&t, 2, 5);
printEdgeList(t);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgaW50IE5PREU7CnN0cnVjdCBFREdFIHsKICAgIE5PREUgbm9kbzE7ICAgICAgICAvL3ByaW1vIG5vZG8gZGVsbCdhcmNvCiAgICBOT0RFIG5vZG8yOyAgICAgICAgLy9hbHRybyBub2RvIGRlbGwnYXJjbwogICAgc3RydWN0IEVER0UgKm5leHQ7ICAgIC8vc3VjY2Vzc2l2aSBhcmNoaQp9Owp0eXBlZGVmIHN0cnVjdCBFREdFKiBFREdFTElTVDsKCnZvaWQgZGVsZXRlQXJjbyhFREdFTElTVCogdCwgTk9ERSB4LCBOT0RFIHkpewogICAgaWYgKCgqdCkgIT0gTlVMTCkgeyAKICAgICAgICBpZiggKCp0KS0+bm9kbzEgPT0geCAmJiAoKnQpLT5ub2RvMiA9PSB5KXsKICAgICAgICAgICAgRURHRUxJU1QgcCA9ICgqdCk7CiAgICAgICAgICAgICgqdCkgPSAoKnQpLT5uZXh0OwogICAgICAgICAgICBmcmVlKHApOwogICAgICAgIH1lbHNlCiAgICAgICAgICAgIGRlbGV0ZUFyY28oJigqdCktPm5leHQsIHgsIHkpOwogICAgfQp9Cgp2b2lkIGluc2VydEFyY28oRURHRUxJU1QqIHQsIE5PREUgeCwgTk9ERSB5KXsKICAgIEVER0VMSVNUIGUgPSAoRURHRUxJU1QpbWFsbG9jKHNpemVvZihzdHJ1Y3QgRURHRSkpOwogICAgZS0+bm9kbzEgPSB4OwogICAgZS0+bm9kbzIgPSB5OwogICAgZS0+bmV4dCA9ICp0OwogICAgKnQgPSBlOwp9Cgp2b2lkIHByaW50RWRnZUxpc3QoRURHRUxJU1QgdCl7CiAgICB3aGlsZSh0ICE9IE5VTEwpIHsKICAgIAlwcmludGYoIiVkLT4lZFxuIiwgdC0+bm9kbzEsIHQtPm5vZG8yKTsKICAgIAl0ID0gdC0+bmV4dDsKICAgIH0KfQoKaW50IG1haW4odm9pZCkgewoJRURHRUxJU1QgdCA9IE5VTEw7CgkKCWluc2VydEFyY28oJnQsIDEsIDIpOwoJaW5zZXJ0QXJjbygmdCwgMiwgMSk7CglpbnNlcnRBcmNvKCZ0LCAzLCAxKTsKCWluc2VydEFyY28oJnQsIDMsIDUpOwoJcHJpbnRFZGdlTGlzdCh0KTsKCQoJcHV0cygiXG5EZWxldGluZyAyLT4xIik7CglkZWxldGVBcmNvKCZ0LCAyLCAxKTsKCXByaW50RWRnZUxpc3QodCk7CgkKCXB1dHMoIlxuRGVsZXRpbmcgMi0+NSAobm90IGluIGxpc3QpIik7CglkZWxldGVBcmNvKCZ0LCAyLCA1KTsKCXByaW50RWRnZUxpc3QodCk7CgkKCXJldHVybiAwOwp9Cg==