Ir para conteúdo
Fórum Script Brasil

Manoel Kikachi Mendez

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre Manoel Kikachi Mendez

Manoel Kikachi Mendez's Achievements

0

Reputação

  1. Bom dia, pessoal. Espero que eu esteja publicando de forma certa, porque sou novo no fórum e novo na programação. Então, sobre uma dúvida que estou, mais especificamente em "Listas Encadeadas Simples", é que a função abaixo deve eliminar a primeira metade da lista encadeada. Eu teria que percorrer toda lista para eliminar a metade da lista, caso seja par. Será que estou fazendo de forma certa? Se puderem me ajudar com o código abaixo, será muito bem-vindo!! Função abaixo: // (c) Remove a primeira metade da Lista. Caso a lista possua um número ímpar de elementos, // considere que a primeira metade possui mais elementos // (Ex: se a lista possuir 5 elementos, a primeira metade possui os 3 primeiros elementos). // Se a lista tiver vazia, nada acontece. void removePrimeiraMetade(Lista *L) { // IMPLEMENTE ESTA FUNÇÃO //Estou pensando no código if (listaEstavazia(L)){ return; } else{ No *p = L->inicio; No *anterior = NULL; while (p != NULL){ if (L->tamanho % 2 == 0){ anterior->prox = no->prox; L->tamanho--; } else { anterior->prox = no->prox; L->tamanho--; } } } } Struct _no, _produto e _lista (não tá na ordem, mas está aqui): typedef struct _produto { int num_serie; // numero de série do produto char nome[64]; double preço; } Produto; // struct que define um nó curcular duplamente encadeado typedef struct _no { Produto *prod; struct _no *prox; } No; // struct que define uma Lista Ligada Simples typedef struct _lista { No *inicio; No *fim; int tamanho; // numero de nós da lista } Lista;
  2. Boa noite, pessoal. Estou com um exercício da faculdade sobre Listas Encadeadas Simples, e queria fazer com que a ordem dos nós fique inversa a que inseri nos nós. Como posso fazer isso? É basicamente nessa maneira: **ANTES** L -> (800, 99.99, Polystation 5) -> (981, 199.99, XCaixa Series Y) -> (345, 299.99, mouse gamer) -> (123, 699.99, teclado) -> NULL **DEPOIS** L -> (123, 699.99, teclado) -> (345, 299.99, mouse gamer) -> (981, 199.99, XCaixa Series Y) -> (800, 99.99, Polystation 5) -> NULL A) Função que inverte o nó da lista // (d) Retorna a Lista invertida. Se a lista está vazia, retorne uma lista vazia. Lista *inverter(const Lista *L) { // IMPLEMENTE ESTA FUNÇÃO Lista* q; /* variável auxiliar para nova lista */ No *p; int aux; for (p = L; p != NULL; p = p->prox) if (p-> == NULL) { aux = p->prox; p->prox = NULL; return p; } } B) Structs de `_produto`, `_no` e `_lista` // struct que define um produto typedef struct _produto { int num_serie; // numero de série do produto char nome[64]; double preço; } Produto; // struct que define um nó curcular duplamente encadeado typedef struct _no { Produto *prod; struct _no *prox; } No; // struct que define uma Lista Ligada Simples typedef struct _lista { No *inicio; No *fim; int tamanho; // numero de nós da lista } Lista; C) Código acionado na `main()`: else if (strcmp(comando, "inverte") == 0) { Lista *L_aux = inverter(L); destroiLista(&L); L = L_aux; }
×
×
  • Criar Novo...