int main()
{
	FILE *f;
	Dados l;

	char nome[30];
	char rua[40];
	int numero;
	float telefone; 
	char cidade[20];
	char estado[10];

	inicLista(&l);

	f = fopen("arq.in", "r");

	if (f == NULL)
	{
		perror("Erro ao abrir o arquivo");
		return 1;
	}

	while(fscanf(f, "%[^\n]\n%[^\n]\n%d\n%f\n%[^\n]\n%[^\n]\n",nome,rua, &numero, &telefone,cidade, estado) != EOF)
	{	
		insereInicio(&l,nome,rua, numero, telefone,cidade, estado);
	}
	
	exibe(&l);

	fclose(f);

	return 0;
}
예제 #2
0
lista *inserePosN(lista *inicio){
	lista *novo, *anterior, *proximo;
	int num, pos;
	int numLista = contaLista(inicio);

	do{
		printf("\nInsira a posicao da lista na qual voce deseja adicionar um nodo: ");
		scanf("%d", &pos);
		if (pos < 0 || pos > numLista+1){
			printf("\nA lista possui %d posicoes, insira uma posicao compativel para inserir um nodo!");
		}
	} while (pos < 0 || pos > numLista+1);

	if (isPrimeiro(pos)){
		inicio = insereInicio(inicio);
	}
	else if (pos == numLista+1){
		inicio = insereFim(inicio);
	}
	else{
		printf("\nDigite um valor para inserir no novo nodo: ");
		scanf("%d", &num);
		novo = getMallocLista();
		anterior = pegaNodoN(inicio, pos - 1);
		proximo = pegaNodoN(inicio, pos + 1);
		if (novo != 0){
			novo->valor = num;
			novo->prox = anterior->prox;
			anterior->prox = novo;
		}
		imprimeLista(inicio, pos, 0, 1);
	}
	return inicio;
}
예제 #3
0
void opcao(node *LISTA, int op)
{
    switch(op){
        case 0:
            libera(LISTA);
            break;
            
        case 1:
            exibe(LISTA);
            break;
        
        case 2:
            insereInicio(LISTA);
            break;
        
        case 3:
            insereFim(LISTA);
            break;      
            
        case 4:
            inicia(LISTA);
            break;
        
        default:
            printf("Comando invalido\n\n");
    }
}
예제 #4
0
//função que distribui as peças, seis para o jogador, seis para a máquina e um para a mesa.
//recebe um deck embaralhado e retorna o resto do deck, depois de distribuir
Node *distribui(Node *pecas) {
    int i;

    //distribui para mão do jogador
    for (i=0; i<=6; i++) {
      playerHand=insereInicio(playerHand, pecas->numberLeft, pecas->numberRight);
      pecas=pecas->right;
      free(pecas->left);
      pecas->left=NULL;
    }
    //distribui para a mão da maquina
    for (i=0; i<=6; i++) {
      machineHand=insereInicio(machineHand, pecas->numberLeft, pecas->numberRight);
      pecas=pecas->right;
      free(pecas->left);
      pecas->left=NULL;
    }

    return pecas;
}
예제 #5
0
//Função que inicia o "deck" de peças de dominó
Node *criaPecas () {
  int i, j;

  Node *domino = NULL;

  for (i=0; i<=6; i++){
    for (j=i; j<=6; j++) {
      domino = insereInicio(domino, i, j);
    }
  }
  return domino;
}
예제 #6
0
int main(){

    lista lst;
    initLista(&lst);

    insereInicio(&lst, 10);
    insereOrdenado(&lst, 1);
    imprimeLista(&lst);



    return 0;
}
예제 #7
0
/* Insere um elemento no final da lista */
void insereFim(Lista *p_l, elem_t e){
	No_lista *no, *aux;
	if(listaVazia(p_l)){
		insereInicio(p_l,e);
	}else{
		no = malloc(sizeof(No_lista));
		no->info = e;
		aux = *p_l;
		while(aux->prox != NULL){
			aux = aux->prox;
		}
		aux->prox = no;
		no->prox = NULL;
	}
}
예제 #8
0
int main(int argc, char** argv) {
	lista *ptri = NULL;
	int menu = 1;

	printf("************************************************");
	printf("\n* OPERACOES COM LISTAS SIMPLESMENTE ENCADEADAS *");
	printf("\n************************************************");
	printf("\nPressione ENTER para continuar..");
	getch();

	while (menu != 0){
		if (ptri != NULL){
		menu = imprimeMenu();
			switch (menu){

				case 1:
					ptri = insereInicio(ptri);
					break;

				case 2:
					ptri = insereFim(ptri);
					break;

				case 3:
					ptri = inserePosN(ptri);
					break;
				
				case 4:
					trocaPos(ptri);
					break;

				case 5:
					ptri = deletaNodo(ptri);
					break;

				case 6:
					imprimeLista(ptri, 0, 0, 1);
					break;

			}//fecha switch menu
		}//fecha if
		else{
			ptri = inserePrimeiro(ptri);
		}
	}//fecha while
	return (EXIT_SUCCESS);
}
예제 #9
0
//função que embaralha as peças
//recebe o cabeçalho da lista e retorna ela atualizada
Node *embaralha(Node *pecas) {
  srand( (unsigned)time(NULL));
  Node *vPecas, *vBaralho=(Node *)malloc(28*(sizeof(Node)));
  int i, ri, count=0;

  vPecas = toArray(pecas, &i);
  limpaLista(pecas);

  // esse while vai distribuir do vetor ordenado para um vetor aleatório
  while (count <28) {
    ri = rand()%28;
    if (vPecas[ri].numberRight != -1) {
      vBaralho[count]=vPecas[ri];
      vPecas[ri].numberRight=-1;
      count++;
    }
  }

  pecas=NULL;//inicializa pecas
  for (i=0; i<28; i++) {
    pecas=insereInicio(pecas,vBaralho[i].numberLeft, vBaralho[i].numberRight);
  }
  return pecas;
}
예제 #10
0
int main(){
  int num, opcao;
  Lista l;

  inicLista(&l);
  
  opcao = 1;  
  while(opcao <= 10 && opcao > 0){
    printf("\n 1 - insere um numero no inicio da lista");
    printf("\n 2 - insere um numero no fim da lista");
    printf("\n 3 - insere um numero de maneira ordenada");
    printf("\n 4 - verifica se a lista esta ordenada");
    printf("\n 5 - ordena a lista");
    printf("\n 6 - remove o elemento que esta no inicio da lista");
    printf("\n 7 - remove o elemento que esta no fim da lista");
    printf("\n 8 - remove um valor determinado");
    printf("\n 9 - inverte");
    printf("\n 10 - exibe a lista");
    printf("\n qualquer outro numero para sair");
    printf("\n\nEntre com uma das opcoes acima: ");
    scanf("%d", &opcao);
    
    switch (opcao){
    case 1:
      printf("\n\nEntre com o numero a ser inserido: ");
      scanf("%d", &num);
      insereInicio(&l, num);
      break;      
    case 2:
      printf("\n\nEntre com o numero a ser inserido: ");
      scanf("%d", &num);
      insereFim(&l, num);
      break;
    case 3:
      printf("\n\nEntre com o numero a ser inserido: ");
      scanf("%d", &num);
      insereOrdenado(&l, num);
      break;
    case 4: 
      if (ordenada(&l))
	printf("\nLista ordenada\n");
      else
	printf("\nLista desordenada\n");
      break;
    case 5: 
      ordena(&l);      
      break;
    case 6:
      if (removeInicio(&l, &num))
	printf("\nNumero removido: %d\n", num);
      else
	printf("\nLista vazia");
      break;
    case 7:
      if (removeFim(&l, &num))
	printf("\nNumero removido: %d\n", num);
      else
	printf("\nLista vazia");
      break;
    case 8:
      printf("\n\nEntre com o numero a ser removido: ");
      scanf("%d", &num);
      if (!removeValor(&l, num))
	printf("Numero nao encontrado");
      break;      
    case 9: 
      inverte(&l);
      break;            
    case 10: exibe(&l); break;
    }
    
    exibe(&l);
    printf("\n\n");    

  }    
    //    libera(&l);
  return 0;
}
int main(){
  No_Lista ls;
  No_Lista *ld;
  int i;


  inicLista(&ls);
  inicListaD(&ld);

  insereInicio(&ls, 7);
  insereInicio(&ls, 4);
  insereInicio(&ls, 5);
  insereInicio(&ls, 3);
  insereInicio(&ls, 6);
  exibe(&ls);
  printf("\n");
  removeMaior1(&ls, &i);
  printf("\n%d\n", i);
  exibe(&ls);
  removeMaior1(&ls, &i);
  printf("\n%d\n", i);
  exibe(&ls);
  removeMaior1(&ls, &i);
  printf("\n%d\n", i);
  exibe(&ls);
  removeMaior1(&ls, &i);
  printf("\n%d\n", i);
  exibe(&ls);
  removeMaior1(&ls, &i);
  printf("\n%d\n", i);
  exibe(&ls);
  removeMaior1(&ls, &i);
  printf("\n%d\n", i);


  printf("\n\n");
  insereInicioD(&ld, 7);
  insereInicioD(&ld, 4);
  insereInicioD(&ld, 5);
  insereInicioD(&ld, 3);
  insereInicioD(&ld, 6);
  exibe(ld);
  printf("\n");
  imprimeRec(ld);
  printf("\n");
  imprimeIt(ld);
  printf("\n");

  removeMaior3(&ld, &i);
  printf("\n%d\n", i);
  exibe(ld);
  removeMaior3(&ld, &i);
  printf("\n%d\n", i);
  exibe(ld);
  removeMaior3(&ld, &i);
  printf("\n%d\n", i);
  exibe(ld);
  removeMaior3(&ld, &i);
  printf("\n%d\n", i);
  exibe(ld);
  removeMaior3(&ld, &i);
  printf("\n%d\n", i);
  exibe(ld);
  removeMaior3(&ld, &i);
  printf("\n%d\n", i);
  //exibe(ld);
  printf("\n\n");

  return 0;
}