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

Programinha De C, Ponteiros E Listas


BrunoSilva

Pergunta

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
/*
Assunto .: Utilizando Ponteiros
*/

// definindo estrutura do no
typedef struct Tno
{
  int valor;
  struct Tno *prox;
} Tno, *no;

// definindo estrutura da lista
typedef struct Tlista
{
  int tam;
  no prim;
  no ultimo;
  no marcador;
} Tlista, *lista;

// Funcao para Inserir 
lista InsertLista( int elemento, lista l )
{
  no novo;
  novo = (no) malloc( 1 * sizeof( Tno ) );
  novo -> valor = elemento;
  novo -> prox  = NULL;

  if ( l -> tam == 0 )
  {
    l -> prim = novo;
    l -> ultimo =  novo;
    l -> marcador = novo;
  }
  if( l-> marcador != l-> ultimo )
    {
      novo-> prox = l-> marcador-> prox;
      l-> marcador-> prox = novo;  
    }
  else
    {
     l -> marcador -> prox = novo;
     novo -> prox = NULL;
     l -> ultimo = novo;
    }

  l -> marcador = novo;
  l -> tam + 1;

  return l;
}

//Funcao para Iniciar Lista
lista Inicia_Lista( lista l )
{
  l = (lista) malloc( 1 * sizeof( Tlista ) );

     l -> tam = 0;
     l -> prim = NULL;
     l -> ultimo =  NULL;
     l -> marcador = NULL;
    return l;
}

//Funcao para Imprimir Lista
lista ImprimeLista( lista l )
{
  l-> marcador = l-> prim;
  
//  while( l -> marcador != NULL )

  while ( l-> marcador-> prox != NULL )
    {
      printf("%d\n", l-> marcador-> valor);
      l-> marcador = l-> marcador-> prox;   
    }
        return l;
}

//Programa Principal
int main()
{
  int escolha=1;
  int opcao = 0;
  lista l;  
  

while (escolha != 4)
  {
    printf("\n\n ----------------------- ");

    printf("\n 1 - Inserir um elemento na lista ");
    printf("\n 2 - Eliminar um elemento ");
    printf("\n 3 - Imprimir a lista ");
    printf("\n 4 - Sair do programa ");
    printf("\n\n Escolha uma opcao: ");
    scanf("%d",&escolha);
  
// estrutura switch
switch (escolha) {
case 1:
  {
    printf("\n\n Digite um elemento para inserir na lista: ");
    scanf("%d",&opcao); 

    for(int i=0; i<opcao; i++)
     l = InsertLista(i, l);
    
    break;
    
  }
case 2:
  {
    printf("\n\n Eliminar um elemento:  ");
    scanf("%d",&opcao);
    break;
  }
case 3:
  {
    printf("\n\n Imprimir a lista: ");
    scanf("%d",&opcao);
    
    ImprimeLista(l);
    
    break;
  }
case 4:
  {
    printf("\n\n O programa sera fechado em 5 segundos....");
    system("close");
  }
default:
  {
    printf("\n\n Escolha uma opção do menu!");          
    
  }        
  
  }
}

//-----------

  l = Inicia_Lista(l);

  for(int i=0; i<10; i++)
    l = InsertLista(i, l);

    ImprimeLista(l);

return(0);

}

Estou com um problema na chamada das funcoes quando o usuario informa os mesmo

no menu...

não estou consigando por exemplo...quando o usuario infomar a opcao 1) ele tem que digitar

o elemento para inserir na lista e a opcao 3) tem que imprimir a lista de acordo com esse elemento informado, so que não estou conseguindo fazer isso!!

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Pra quê você faz um for aqui?

    printf("\n\n Digite um elemento para inserir na lista: ");
    scanf("%d",&opcao);

    for(int i=0; i<opcao; i++)
     l = InsertLista(i, l);
Não seria simplesmente:
    printf("\n\n Digite um elemento para inserir na lista: ");
    scanf("%i", &i);

    l = InsertLista(i, l);

E, também não estaria faltando inicializar a lista antes disso?

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

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,2k
    • Posts
      652k
×
×
  • Criar Novo...