Ir ao conteúdo
  • Cadastre-se

William Chapuis

Membro Júnior
  • Posts

    6
  • Cadastrado em

  • Última visita

Reputação

2
  1. @Midori Sim, estou usando dessa forma por enquanto mesmo... Acredito que deve ser o mais viável.
  2. Caso ajude... Até o momento, a forma que estou utilizando seria essa: for i in x: resposta.append(i[0])
  3. Olá, eu estou em duvidas sobre a função lambda... Já ouvi falar bastante e já tentei pesquisar um pouco sobre, porém nunca consegui usar de forma "pratica" em nenhum programa que fiz ate hoje... No caso em questão eu possuo uma lista que possui 1 ou mais listas dentro dela. A informação que eu quero retirar esta na posição 0 de cada uma dessas listas... Eu pensei em usar uma função, porém como só vai ser utilizada 1 vez durante todo o programa, eu acabei pensando que possa ser uma boa hora de usar o lambda. Porém não consigo pensar a forma correta que eu devo montar a função. Um exemplo de possíveis listas: x = [['a', 1], ['b', 2]] y = [['g', 3]] ## função que recebe uma lista e retorna uma lista contendo os valores das posições 0 de cada lista interna ## valores que pretendo receber com cada lista: ## x -> ['a','b'] ## y -> ['g'] Caso ache que outra forma possa compensar mais estou aberto a sugestões! Se possível gostaria de um pouco de explicação de como montar/foi montado...
  4. Eu consegui implementar depois de encontrar esse curso: https://programacaodescomplicada.wordpress.com/indice/estrutura-de-dados/ Tem uma parte que fala sobre tabela hash ... No final fiz com 2 structs, uma elemento e outra tabela... ta ai o que eu fiz caso possa ajudar alguém... #define tam 10 struct elemento { int chave; struct elemento *prox; }; struct tabela { struct elemento **dados; }; tabela* Cria_Tabela() // cria uma tabela vazia { tabela *t = (tabela*) malloc(sizeof(tabela)); t->dados = (struct elemento**) malloc(tam * sizeof(struct elemento*)); for(int i=0; i<tam;i++) t->dados[i] = NULL; return t; } void Inserir(tabela *T, int chave) { int end = chave%tam; elemento *novo = (elemento*) malloc(sizeof(elemento)); novo->chave = chave; novo->prox = NULL; if(T->dados[end] != NULL) { elemento *p; p = T->dados[end]; while(p->prox != NULL) { p = p->prox; } p->prox = novo; } else T->dados[end] = novo; }
  5. @vangodp Sim, é tabela hash sem area overflow. Eu dei uma editada no post... Tinha me esquecido de mencionar isso, obrigado.
  6. Bom, eu preciso fazer uma tabela hash de 100 elementos como mostrado no esquema: Essa tabela (vetor) de 100 elementos … cada um deles possuem números chamados de “chaves” e um ponteiro apontando para o a próxima chave (lista encadeada). A regra que deve ser seguida para as inserções no vetor, é que o ultimo digito da chave é seu “endereço”, e esse endereço indica qual posição do vetor eu devo inserir. Ex: Inserir a chave 487 (chave) 487 % (tamanho do vetor) 100 = 7 Então devo inserir a chave 487 na posição 87 do vetor: v[87] = 487 Porém eu estou tendo problemas com os ponteiros para chamar as funções e utiliza-los… Eu sei fazer uma lista encadeada, porém não sei como fazer um vetor disso… Esse é um pouco do que eu fiz quando era só uma lista encadeada… struct dados { int chave; struct dados *prox; }; typedef struct dados Lista; void Cria(Lista **L) { *L = NULL; } void Inserir(Lista **L, int v) { Lista *p, *q; p = (Lista*)calloc(1, sizeof(Lista)); p->chave = v; p->prox = NULL; if(*L == NULL) { *L = p; } else { q = *L; while(q->prox != NULL) { q = q->prox; }; q->prox = p; } } Eu conversei com um amigo e ele me indicou fazer a declaração da struct dessa forma: struct dados { int chave; struct dados * prox; } tabela[100]; typedef struct dados Elemento; porém eu não tenho ideia de como eu vou chamar isso na função... Porque o vetor vai estar na main()... e eu só vou chamar a função "Inserir" com o vetor e o valor para inserir Como eu chamaria essa função ? Inserir(???,int chave) Se alguém puder me dar uma luz, eu agradeço demais ... Preciso fazer varias coisas alem da inserção, mas não consigo porque eu não sei de que forma eu vou chamar o vetor

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...