Ir ao conteúdo
  • Cadastre-se

ineedahelp

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

posts postados por ineedahelp

  1. Boa noite! Desenvolvi uma lista encadeada porém quero que a mesma não aceite números que já foram alocados na lista. 
    Tento de várias formas porém sem sucesso. Alguém pode me ajudar com alguma orientação? 
    Tô deixando apenas o código da função, mas se for necessário coloco o código completo. 

     

    void insereFim(no *LISTA)
    {
    	no *novo=(no *) malloc(sizeof(node));
    	if(!novo)
    	{
    		printf("Sem memoria disponivel!\n");
    		exit(1);
    	}
    	printf("Novo elemento:\n\n  ");
    	scanf("%d", &novo->num);
    	
    	novo->prox = NULL;
    	
    	if(vazia(LISTA))
    		LISTA->prox=novo;
    	else
    	{
    		no *p = LISTA->prox;
    		
    		while(tmp->prox != NULL)
    			p = p->prox;
    		
    		p->prox = novo;
    	}

     

  2. Boa tarde! 
    Minha lista só está exibindo todos os valores  quando coloco um elemento no início.  Tipo, se eu adicionar elementos só ao final dela e pedir pra exibir, eles não aparecem.
    Alguém pode me dar uma ajuda?

     

    #include<stdio.h>
    #include<stdlib.h> 
      
    typedef struct no
    {
      	int info;
    	struct no *prox; 
      	
    }LISTA; 
      
    
    LISTA *criarLista()
    {
    	return NULL; 
    }
    LISTA * inserirInicio(LISTA *lista, int num)
    {
    	LISTA *novo= (LISTA*) calloc(1,sizeof(LISTA)); 
    	novo->info= num; 
    	novo->prox=lista; 
    	return novo; 
    	
    }
    
    void inserirFinal(LISTA *lista, int num)
    {
    	LISTA *novo =(LISTA*) calloc(1,sizeof(LISTA)); 
    	novo->info= num; 
    	LISTA *aux= lista;
    	LISTA *ant= NULL; 
    		if(lista==NULL)
    		{
    			lista=novo; 
    			
    		}
    		else
    		{
    			while(aux!=NULL)
    			{
    				ant=aux;
    				aux=aux->prox; 
    				 
    			}
    			  ant->prox= novo; 
    			  
    		}
    		
    	
    } 
    
    void imprime(LISTA *lista)
    {
    	LISTA *p;
    	for(p=lista; p!=NULL; p=p->prox) 
    	{
    		printf(" %d\n", p->info); 
    	}
    }
    
    void buscar(LISTA *lista, int valor)
    {
    	LISTA *p;
    	for(p=lista;p!=NULL;p=p->prox)
    	{
    		if(valor==p->info)
    		{
    			
    			printf("Valor %d encontrado!\n", valor); 
    			
    				
    		}
    	
    	}
    }
    
    LISTA *retira(LISTA *lista, int valor)
    {
    	LISTA *p; 
    	p=LISTA;
    	LISTA *ant=NULL; 
    	while((p!=NULL)&&(valor!=p->info))
    	{
    		ant=p; 
    		p=p->prox;
    	}
    	if(p==NULL)
    	{
    		return LISTA; 
    	}
    	if (ant==NULL)
    	{
    		LISTA=p->prox; 
    	}
    	else
    	{
    		ant->prox=p->prox; 
    		
    	}
    	free(p); 
    	return LISTA; 
    }
    
    
    int main()
    {
    
    	LISTA *lista;
    	LISTA *p;   
    	int op; 
    	int num;
    	int pos; 
    	int valor; 
    	do
    	{
    		printf("\n\tMENU DE opções\n\n"); 
    		printf("(1) Criar Lista\n"); 
    		printf("(2) Inserir Início\n"); 
    		printf("(3) Inserir Final\n"); 
    		printf("(4) Imprimir Valores\n"); 
    		printf("(5) Buscar Valor\n"); 
    		printf("(6) Retirar valor\n"); 
    		printf("(7) Sair\n"); 
    		
    		printf("ESCOLHA UMA OPCAO: "); 
    		scanf("%d", &op); 
    		
    		switch(op)
    		{
    			case 1:
    				
    				lista=criarLista();
    			 
    				break; 	
    			
    			case 2:
    				printf("Entre com o numero que deseja inserir: "); 
    				scanf("%d", &num); 
    				lista=inserirInicio( lista, num);
    				
    				break;
    			
    			case 3:
    				printf("Entre com o numero que deseja inserir: "); 
    				scanf("%d", &num); 
    				 inserirFinal(lista, num);
    			 	break;
    
    				 
    			case 4:
    				
    				imprime(lista); 
    			
    			 	break; 
    				 
    			case 5:
    				printf("Entre com o valor que deseja buscar: "); 
    				scanf("%d", &valor);
    				buscar(lista, valor);
    				break; 
    				 
    			case 6:
    				printf("Entre com o valor que deseja retirar: "); 
    				scanf("%d", &valor); 
    				lista=retira(lista,  valor);
    			 	break; 
    
    			case 7:
    			
    			 	break; 
    				 
    			
    			
    		}
    		
    		
    	}
    	while(op!=7);
    }

     

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!