Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida sobre lista encadeada simples - eliminar primeira metade da lista


Manoel Kikachi Mendez

Pergunta

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;

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

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

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...