Ir ao conteúdo

Posts recomendados

Postado
#include <stdio.h>
#include <stdlib.h>

struct tipo_no {
    int dado;
    struct tipo_no * proximo;
};

typedef struct tipo_no No;

struct tipo_lista{
     No *primeiro;
     No *ultimo;
};

typedef struct tipo_lista Lista;  

void criarLista(Lista* lista){
  lista->primeiro = NULL;
  lista->ultimo=NULL;   
}

int listaVazia(Lista* lista){
   if ((lista->primeiro == NULL) || (lista->ultimo==NULL)) return 1;
   else return 0;
}

void inserirFinal(Lista* lista,int valor){
  No *novo;   
  novo = (No*)malloc(sizeof(No));
  novo->dado = valor;
  novo->proximo=NULL;
  if(listaVazia(lista)==1){
    lista->primeiro = novo;                       
  }else{
     (lista->ultimo)->proximo = novo;    
  }                                 
  lista->ultimo = novo;     
}

void inserirInicio(Lista* lista,int valor){
  No *novo;   
  novo = (No*)malloc(sizeof(No));
  novo->dado = valor;
  novo->proximo=NULL;
  if(listaVazia(lista)==1){
    lista->ultimo = novo;                       
  }else{
     novo->proximo = lista->primeiro;    
  }                                 
  lista->primeiro = novo;     
} 
//Função que adiciona os números pares no início da lista e os números ímpares no final da lista
void inserir(Lista* lista, int valor){
	if(lista(valor) % 2 = 0){
		inserirInicio();
	} else {
		inserirFinal();
	}
}

void listar(Lista* lista){
   No* ponteiro = lista->primeiro;
   while(ponteiro!= NULL){
       printf("%d ",ponteiro->dado);             
       ponteiro = ponteiro->proximo;              
   }   
   printf("\n");
}

int main(int argc, char *argv[]){
  Lista* lista = (Lista*) malloc(sizeof (Lista));   
  criarLista(lista);
  int op=0,valor;
  do{
    system("cls");  
    printf("\n1-Inserir no Final\n2-Inserir no Inicio\n3-Listar\n4-Sair\n");
    scanf("%d",&op);
    switch(op){
       case 1:printf("\nInforme o Valor:");
              scanf("%d",&valor);
              inserirFinal(lista,valor);
              break;
       case 2:printf("\nInforme o Valor:");
              scanf("%d",&valor);
	   		  inserirInicio(lista,valor);
              break;
       case 3:system("cls");
              listar(lista);                
              system("PAUSE");	
    }  
  }while(op != 4);     
  system("PAUSE");	
  return 0;
}

Boa tarde! preciso fazer a implementação da função:

//Função que adiciona os números pares no início da lista e os números ímpares no final da lista
void inserir(Lista* lista, int valor){
    if(lista(valor) % 2 = 0){
        inserirInicio();
    } else {
        inserirFinal();
    }
}

para caso o novo número inserido seja para, vá para o início da lista e caso ímpar, vá para o final da lista. Para isso já foram implementadas as funções InserirFinal() e InserirInicio(), alguém poderia me ajudar e esclarecer onde estou errando?

Postado

Olá!

Com relação a essa função, falta apenas os parâmetros. Entre em contato com autor do programa e peça-lhe mais esclarecimentos. Caso não consiga essa função faz mais sentido desta maneira:

//Função que adiciona os números pares no início da lista e os números ímpares no 
//final da lista
void inserir(Lista* lista, int valor){
  /* A função inserir tem duas outras internas a ela
  
        see:: inserirInicio
        see:: inserirFinal
        
        As duas funções internas exigem igualmente dois parâmetros
           ::lista : parametro do tipo Lista.
           ::valor : parametro do tipo int.
  */
  if((valor % 2) == 0){inserirInicio(lista, valor);}
  else{inserirFinal(lista, valor);}
  return;}

Você entendeu isso?

O.k!

  • Curtir 1
Postado
1 hora atrás, AnsiC disse:

Olá!

Com relação a essa função, falta apenas os parâmetros. Entre em contato com autor do programa e peça-lhe mais esclarecimentos. Caso não consiga essa função faz mais sentido desta maneira:


//Função que adiciona os números pares no início da lista e os números ímpares no 
//final da lista
void inserir(Lista* lista, int valor){
  /* A função inserir tem duas outras internas a ela
  
        see:: inserirInicio
        see:: inserirFinal
        
        As duas funções internas exigem igualmente dois parâmetros
           ::lista : parametro do tipo Lista.
           ::valor : parametro do tipo int.
  */
  if((valor % 2) == 0){inserirInicio(lista, valor);}
  else{inserirFinal(lista, valor);}
  return;}

Você entendeu isso?

O.k!

#include <stdio.h>
#include <stdlib.h>

struct tipo_no {
    int dado;
    struct tipo_no * proximo;
};

typedef struct tipo_no No;

struct tipo_lista{
     No *primeiro;
     No *ultimo;
};

typedef struct tipo_lista Lista;  

void criarLista(Lista* lista){
  lista->primeiro = NULL;
  lista->ultimo=NULL;   
}

int listaVazia(Lista* lista){
   if ((lista->primeiro == NULL) || (lista->ultimo==NULL)) return 1;
   else return 0;
}

void inserirFinal(Lista* lista,int valor){
  No *novo;   
  novo = (No*)malloc(sizeof(No));
  novo->dado = valor;
  novo->proximo=NULL;
  if(listaVazia(lista)==1){
    lista->primeiro = novo;                       
  }else{
     (lista->ultimo)->proximo = novo;    
  }                                 
  lista->ultimo = novo;     
}

void inserirInicio(Lista* lista,int valor){
  No *novo;   
  novo = (No*)malloc(sizeof(No));
  novo->dado = valor;
  novo->proximo=NULL;
  if(listaVazia(lista)==1){
    lista->ultimo = novo;                       
  }else{
     novo->proximo = lista->primeiro;    
  }                                 
  lista->primeiro = novo;     
} 
//Função que adiciona os números pares no início da lista e os números ímpares no final da lista
void inserir(Lista* lista, int valor){
	if((valor % 2) == 0){
		inserirInicio(lista, valor);
	} else {
		inserirFinal(lista, valor);
	}
}

void listar(Lista* lista){
   No* ponteiro = lista->primeiro;
   while(ponteiro!= NULL){
       printf("%d ",ponteiro->dado);             
       ponteiro = ponteiro->proximo;              
   }   
   printf("\n");
}

int main(int argc, char *argv[]){
  Lista* lista = (Lista*) malloc(sizeof (Lista));   
  criarLista(lista);
  int op=0,valor;
  do{
    system("cls");  
    printf("\n1-Inserir Numero\n2-Listar\n3-Sair\n");
    scanf("%d",&op);
    switch(op){
       case 1:printf("\nInforme o Valor:");
              scanf("%d",&valor);
              inserir(lista,valor);
              break;
       case 2:system("cls");
              listar(lista);                
              system("PAUSE");	
    }  
  }while(op != 3);     
  system("PAUSE");	
  return 0;
}

Muito obrigado.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!