Ir para conteúdo
  • ×   Você colou conteúdo com formatação.   Remover formatação

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.

  • Conteúdo Similar

    • Por Sr.Hozuki
      Estou estudando listas em C, e sinceramente, estou achando a coisa mais difícil do mundo porque não sei bem a aplicação disso. Alguém sabe um livro ou pode ser até um pdf que mostre como funciona uma lista? Tipo, dando os conceitos e tal, mas mostrando um código que de para entender bem, porque nos livros que vi dão apenas o conceito e o cara que se vire para usar aquela coisa de tipo abstrato de dados, estou bem confuso D: Agradeço a quem ajudar
    • Por guik12008
      Boa tarde,
      Estou com duvida nesse exercício e não sei nem por onde começar.
      Construir um TAD FilaClientes, conforme a especificação abaixo.

      1. Trata-se de uma fila construída sobre lista encadeada
      2. Deve ser uma fila de Clientes, e cliente deve ser uma estrutura contendo:
      - nome (char[])
      - idade (int)
      - CFP (int)
      2. Cada node da fila deve ter um ponteiro para um Cliente e um ponteiro para o próximo node
      3. Recomenda-se a utilização de uma estrutura HEADER (FilaCliente) para definir a Fila
      4. A TAD FilaCliente deve implementar as seguintes operações:
      - FilaCliente * criaFilaCliente()
      -> Cria fila vazia
      - int enqueue2(FilaCliente *fila, Cliente *cliente)
      -> Enfileira (insere) cliente já instanciado
      - int enqueue(FilaCliente *fila, char nome[], int idade, int cpf)
      -> Enfileira (insere) cliente com base em seus dados
      - Cliente * dequeue(FilaCliente *fila)
      -> Desenfileira (remove) cliente da fila e o retorna
      - Cliente * head(FilaCliente *fila)
      -> Retorna dados (referência) do primeiro cliente da fila, sem removê-lo
      - Cliente * tail(FilaCliente *fila)
      -> Retorna dados (referência) do último cliente da fila, sem removê-lo
      - void imprimeFila(FilaCliente *fila)
      -> Função para teste, deve imprimir os dados dos clientes na fila, do primeiro para o último
      Grato desde já.
    • Por crookedthing
      Pessoal, eu tenho que criar uma lista encadeada que permita inserir e remover dados organizando-os em ordem alfabética( de acordo com o nome inserido). Consigo fazer isso em código comum, mas usando listas fica muito difícil. Estou tendo muita dificuldade. Envio o código, mas não compila, está cheio de falhas que eu não faço ideia de como solucionar. Obrigado.
       
      Este é o código onde desenvolvo as listas e as estruturas
      #include<stdilib.h> #include<stdio.h> #include<string.h> //nodo principal do código struct nodo{ int matricula; char nome[40]; float nota; struct nodo *prox; }; //ponteiro para o nodo. Inicio da lista struct nodo *inicio;//variavel global, acessavel por todos //função de inserção de dados //data= dados, n=posição void insert(int matricula, char nome[40], float nota){ //variavel auxiliar. struct nodo *temp; //conferir alocação de memoria com a criação de um nodo //criar um ponteiro para o nodo struct nodo* novo = (struct nodo*)malloc(sizeof(struct nodo*)); if(novo==NULL){ printf("sem memoria!"); } //se read estiver fazia,enfia o valor em inicio. if inicio(==NULL){ novo->matricula= data;// preenche com o valor //FALTA PREENCHER O RESTO novo->prox = NULL;//a proxima posição aponta para null. inicio = novo;//inicio aponta para a 1º posição }else{ //se o inicio não estiver vazio, preenche o nodo novo->matricula; novo->nome; novo->nota; while(strcmp(temp->data,novo->data)>0){//substituir data aqui temp= temp->prox;//variavel temporaria aponta para o proximo. temp->prox = novo;//depois aponta para novo. } } } void Mostrar(){ struct nodo *aux = inicio; printf("INICIO: %p\n", inicio); while (aux != NULL) { printf("%p|%.2f|%s|%d\n", aux, aux->nota,aux->nome,aux->matricula); aux = aux->prox; } printf("\n"); } int Retirar(){ struct nodo *aux, *auxOld; if (inicio == NULL) return 0; /// Percorrer a lista ate o fim aux = inicio; auxOld = NULL; while (aux->prox != NULL) { auxOld = aux; aux = aux->prox; } free(aux); auxOld->prox = NULL; return 1; }
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.