Exemple #1
0
Vertex vertex_delete(String key, Vertex t)
{
  if (vertex_isempty(t))
    return t;
  else if (strcmp(key, t->name) < 0){
    if (vertex_isempty(t->left))
      return t;
    else{
      t->left = vertex_delete(key, t->left);
      return t;
    }}
    else if (strcmp(key, t->name) > 0){
      if (vertex_isempty(t->right))
	return t;
      else{
	t->right = vertex_delete(key, t->right);
	return t;
      }}
    else if ((vertex_isempty(t->right)) && (vertex_isempty(t->left)))
	return vertex_empty();
    else if (vertex_isempty(t->left))
	return t->right;
    else if (vertex_isempty(t->right))
	return t->left;
      else{
        t->name = min_name(t->right);
	t->right = deletemin(t->right);
	return t;
      }
}
void engine_clear_loading (Context* context, Engine* engine) {
	int i = 0;
	
	vertex_delete(engine->loading_bufs[0]->v);
	context->video[0] = vertex_buffer_delete(
		context->video[0]
		, engine->loading_bufs[0]
	);
	
	for (; i < 9; i++) {
		if (i == 7 || i == 8) {
			vertex_delete(engine->loading_bufs[i+1]->v);
		}
		
		context->video[1] = vertex_buffer_delete(
			context->video[1]
			, engine->loading_bufs[i+1]
		);
	}
	
	// Wait for the drawing thread to terminate before continuing.
	context->pthread_stop = 1;
	int err = pthread_join(context->pthread, NULL);
	
	if (err) {
		LOGE("Error terminating thread.");
		exit(EXIT_FAILURE);
	}
}
Exemple #3
0
void free_graph(struct graph *G)
{
	struct vertex *temp;
	for(temp=G->head;temp;temp=temp->vertexp)
		vertex_delete(G,temp->name);
	free(G);
}
Exemple #4
0
int main()
{
	struct graph *G;
	int opt1,opt2,w;
	char name,s,e;
	G=(struct graph *)create_graph(G);
	FILE *fp;
	fp=fopen("graph","r");
	for(fscanf(fp,"%c",&s);s!='$';fscanf(fp,"%c",&s))
		insert_vertex(G,s);
	for(fscanf(fp,"%c%c%d",&s,&e,&w);s!='$';fscanf(fp,"%c%c%d",&s,&e,&w))
		insert_edge(G,s,e,w);
	fclose(fp);
	do
	{
		printf("\n\n\tEnter the option : \n\t1. for Insert Vertex\n\t2. for Delete Vertex\n\t3. for insert Edge\n\t");
		printf("4. for Delete Edge\n\t5. for Fix the Graph\n\t6. for Exit\n\t\t\t: "); 
		scanf("%d",&opt1);
		switch(opt1)
		{
			case 1:
				printf("\n\tEnter the name : ");
				getchar();
				scanf("%c",&name);
				if(!find_vertex(G,name))
				{
					insert_vertex(G,name);
					printf("\tVertex Inserted Successfully\n\n");
				}
				else
					printf("\tVertex is already Exist\n\n");
				break;
			case 2:	
				printf("Enter the vertex for Delete :\t");
				getchar();
				scanf("%c",&name);
				if(find_vertex(G,name))
				{
					vertex_delete(G,name);
					printf("\tVertex Deleted Successfully\n\n");
				}
				else
					printf("\tVertex not Exist\n\n");
				break;
			case 3:	
				printf("\n\tEnter the start point of edge :\t");
				getchar();
				scanf("%c",&s);
				printf("\n\tEnter the end point of edge :\t");
				getchar();
				scanf("%c",&e);
				printf("\n\tEnter the Weight of Edge :\t");
				scanf("%d",&w);
				if(!find_edge(G,s,e))
				{
					if(insert_edge(G,s,e,w))
						printf("\tEdge Inserted Successfully\n\n");
					else
						printf("\tSuch Vertices not Exist\n\n");
				}
				else
					printf("\tEdge is already Exist\n\n");
				break;
			case 4:	
				printf("\n\tEnter the start point of edge :\t");
				getchar();
				scanf("%c",&s);
				printf("\n\tEnter the end point of edge :\t");
				getchar();
				scanf("%c",&e);
				if(find_edge(G,s,e))
				{
					edge_delete(G,s,e);
					printf("\tEdge Deleted Successfully\n\n"); 
				}
				else
					printf("\tEdge Not Exist\n\n"); 
				break;
			case 5:
				if(G->count>0)
				{
					do
					{
						printf("\n\n\n\tEnter the option for DIRECTED GRAPH : \n\t1. for Matrix Representation\n\t2. for List Representation\n\t3. for Topological Sort Order\n\t4. for Bellman Ford Algorithm for shortest path\n\t5. for Dijkestra Algorithm for shortest path \n\t6. for Vertex Details \n\t7. for Edit Graph\n\t8. for Exit\n\t\t\t: "); 
						scanf("%d",&opt2);
						option1(G,opt2);
					}while(opt2-7);
				}
				else
					printf("\n\tNo vertex exist\n\n");
				break;
			case 6:	
				free_graph(G);
				break;
			default:printf(" wrong input \n");
		}
	}while(opt1-6);	
}