예제 #1
0
파일: 02.cpp 프로젝트: DaniloBarros/Studies
int main(){
	TDelimitador *fila=NULL;
	TElem *elem;
	int op;
	
	do{
		menu();
		scanf("%d",&op);
		switch(op){
			case 1:
				int num;
				puts("Digite um identificador para enfileirar: ");
				scanf("%d",&num);
				Enfileira(fila,num);
				
				break;
			case 2:
				elem=Desenfileira(fila);			
				printf("\nElemento Desinfileirado: %d",elem->Id);
				break;
			case 3:
				Esvazia(fila);
				Vazia(fila);
				break;
			default:op=0;
				break;
			
		}
	}while(op!=0);
	
	
	return 0;
}
예제 #2
0
파일: otimo.c 프로젝트: enzoroiz/AEDS3-TP2
int AdjacenteColorido(TipoLista ListaAdjacentes, TipoLista ListaColoridos){
    TipoApontador AuxAdjacentes, AuxColoridos;
    AuxAdjacentes = ListaAdjacentes.Primeiro;
    AuxColoridos = ListaColoridos.Primeiro;
    if(!Vazia(ListaColoridos) || !Vazia(ListaAdjacentes)){
        while(AuxAdjacentes->Prox!=NULL){//ENQUANTO TIVER ADJACENTES
            while(AuxColoridos->Prox!=NULL){//ENQUANTO TIVER VERTICES COLORIDOS COM A COR C
                if(AuxColoridos->Prox->Item.Vertice == AuxAdjacentes->Prox->Item.Vertice)
                    return TRUE;
                AuxColoridos = AuxColoridos->Prox;
            }
            AuxAdjacentes = AuxAdjacentes->Prox;
            AuxColoridos = ListaColoridos.Primeiro;
        }
    }
    return FALSE;
}
예제 #3
0
파일: otimo.c 프로젝트: enzoroiz/AEDS3-TP2
void Retira(TipoApontador p, TipoLista *Lista, TipoItem *Item){
  TipoApontador q;
  if (Vazia(*Lista) || p == NULL || p->Prox == NULL)
  { printf("Erro: Lista vazia ou posicao nao existe\n");
    return;
  }
  q = p->Prox;
  *Item = q->Item;
  p->Prox = q->Prox;
  if (p->Prox == NULL) Lista->Ultimo = p;
  free(q);
}
예제 #4
0
void Retira(TipoApontador p, TipoLista *Lista, TipoItem *Item){
 /*--Obs.: item a ser retirado e o seguinte ao apontado por p--*/
  TipoApontador q;
  if (Vazia(*Lista) || p == NULL || p->Prox == NULL)
  { printf("Erro: Lista vazia ou posicao nao existe\n");
    return;
  }
  q = p->Prox;
  *Item = q->Item;
  p->Prox = q->Prox;
  if (p->Prox == NULL) Lista->Ultimo = p;
  free(q);
}
예제 #5
0
파일: otimo.c 프로젝트: enzoroiz/AEDS3-TP2
void ConverteGrafo(TipoGrafo * Grafo, int * vertices){
    int i;
    TipoApontador Aux;
    for(i=0;i<Grafo->NumVertices;i++){
        if(!Vazia(Grafo->Adj[i])){//SE A LISTA DE ADJACENTES NÃO FOR VAZIA
            Aux = Grafo->Adj[i].Primeiro;
            while(Aux->Prox!=NULL){//ENQUANTO HOUVER ADJACENTES
                Aux->Prox->Item.Vertice = vertices[Aux->Prox->Item.Vertice];//CORRIGE ADJACENTES DE ACORDO COM O VETOR VERTICES
                Aux = Aux->Prox;
            }
        }
    }
}
int Desenfileira(TipoFila *Fila, TipoItem *item) {
	if(Vazia(Fila))
		return 0;
	Apontador Aux = Fila->frente->Prox;
	*item = Aux->carro;
	Fila->frente->Prox = Aux->Prox;
	Fila->frente->Prox->Ant = Fila->frente;
	if(Fila->frente->Prox == Fila->frente)
		Fila->frente = Fila->tras;
	free(Aux);
	Fila->tamanho = Fila->tamanho - 1;
	return 1;
}
예제 #7
0
파일: 02.cpp 프로젝트: DaniloBarros/Studies
TElem *Consulta(TDelimitador *fila){
	
	TElem *elem=NULL;
	
	if(!Vazia(fila)){
		
		elem=fila->Fin;
		
		return elem;
		
	}else{
		
	}
}
void Imprime_E(TipoFila Fila) {
	if(Vazia(&Fila)){
		printf("Fila de espera vazia");
		return;
	}
	Apontador aux;
	aux = Fila.frente->Prox;
	printf("|  Ant       Chave      Prox  | \n\n");
	while (aux != Fila.frente) {
		printf("%s         %s       %s\n", aux->Ant->carro.placa,
				aux->carro.placa, aux->Prox->carro.placa);
		aux = aux->Prox;
	}
}
예제 #9
0
파일: otimo.c 프로젝트: enzoroiz/AEDS3-TP2
void ImprimeGrafo(TipoGrafo *Grafo){
  int i;
  TipoApontador Aux;
  for (i = 0; i < Grafo->NumVertices; i++)
    { printf("Vertice%2d: ", i);
      if (!Vazia(Grafo->Adj[i]))
      { Aux = Grafo->Adj[i].Primeiro->Prox;
        while (Aux != NULL)
          { printf("%3d ", Aux->Item.Vertice);
            Aux = Aux->Prox;
          }
      }
      putchar('\n');
    }
}
int fila_de_espera(TipoFila *Fila, TipoItem *carro, int op) {

	switch (op) {
	case CHEGADA:
		Enfileira(*carro, Fila);
		return 1;
	case SAIDA:
		if (Vazia(Fila))
			return 0;
		Desenfileira(Fila,carro);
		return 1;
	default:
		return 0;
	}
	return 0;
}
예제 #11
0
파일: hash.c 프로젝트: paulob/compilex
Apontador Pesquisa(TipoVariavel Ch, TipoPeso p, TipoTabela T)
{
  Indice i;
  Apontador Ap;
  i = h(Ch, p);
  if (Vazia(T[i]))
    return NULL;   /* Pesquisa sem sucesso */
        else
            { Ap = T[i].Primeiro;
                while (Ap->Prox->Prox != NULL && strncmp(Ch, Ap->Prox->Item.Variavel, sizeof(TipoVariavel)))
                Ap = Ap->Prox;
                if (!strncmp(Ch, Ap->Prox->Item.Variavel, sizeof(TipoVariavel)))
                    return Ap;
                        else
                            return NULL;   /* Pesquisa sem sucesso */
            }
}
void estacionamento(ESTAC *estac,TipoFila *espera,TipoItem *carro,int operacao){

	switch (operacao) {
		case CHEGADA:
			if(!estacionar(estac,carro))
			fila_de_espera(espera,carro,CHEGADA);
			break;
		case SAIDA:
			retirar_carro(estac,carro->placa);
			if(!Vazia(espera)){
				fila_de_espera(espera,carro,SAIDA);
					estacionar(estac,carro);
				}
			break;
		default:
			break;
	}
}
예제 #13
0
파일: 02.cpp 프로젝트: DaniloBarros/Studies
TElem *Desenfileira(TDelimitador *fila){
	
	TElem *elem=NULL;
	
	if(!Vazia(fila)){
		
		elem = fila->Ini;
		fila->Ini->Prox->Ant = fila->Fin;
		fila->Fin->Prox = fila->Ini->Prox;
		fila->Ini = fila->Ini->Prox;
		fila->qnt -= 1;
		
		if(fila->qnt <= 0){
			Esvazia(fila);
		}
		
		return elem;
	}else{
		return elem;
	}
}
예제 #14
0
파일: 02.cpp 프로젝트: DaniloBarros/Studies
bool Enfileira(TDelimitador *fila, int num){
	
	TElem *elem;
	long int end;
	puts("Digite o endereco:");
	fflush(stdin);
	scanf("%li", &end);
	
	elem = (TElem *) malloc(sizeof(TElem));
	
	if(!Vazia(fila)){
		
		if(!Cheia(fila)){
			elem->Prox = fila->Ini;
			elem->Id=num;
			elem->End = end;
			elem->tam = sizeof(TElem);
			elem->Ant = fila->Fin;
			fila->Fin->Prox = elem;
			fila->Fin = elem;
			fila->qnt += 1;
			return true;
						
		}else{
			return false;
		}
	}else{
		puts("Fila Iniciada!");
		elem->Prox = NULL;
		elem->Ant = NULL;
		elem->Id = num;
		elem->End = end;
		elem->tam = sizeof(TElem);
		fila->Ini = elem;
		fila->Fin = elem;
		fila->qnt = 1;
		return true;	
	}
	
}
예제 #15
0
파일: otimo.c 프로젝트: enzoroiz/AEDS3-TP2
void EsvaziaLista(TipoLista * Lista){
    TipoItem x;
    while(!Vazia(*Lista)){
        Retira(Lista->Primeiro, Lista, &x);
    }
}