Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- adj_vertex_t *tour( adj_vertex_t *E, adj_vertex_t *P){
- if (count_vertices(P) == graphSize){
- return (P);
- }
- adj_vertex_t *inter = setIntersection(E, P);
- if (inter == NULL){
- return NULL;
- }
- adj_vertex_t *v;
- adj_vertex_t *result;
- for(v=inter; v != NULL; v = v->next) {
- result = tour(v->vertex->adj_list, setUnion(P, v));
- if(result) {
- free_adj_list(result);
- return result;
- }
- }
- adj_vertex_t *setUnion(adj_vertex_t *A, adj_vertex_t *B){
- adj_vertex_t *result = malloc(sizeof(adj_vertex_t));
- adj_vertex_t *res_current = result;
- adj_vertex_t *adj_v;
- for (adj_v = A; adj_v != NULL; adj_v = adj_v->next, res_current = res_current->next) {
- res_current->vertex = adj_v->vertex;
- res_current->weight = adj_v->weight;
- res_current->next = malloc(sizeof(adj_vertex_t));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement