Ir ao conteúdo

Posts recomendados

Postado

Olá estou com duvida em como posso remover valor iguais da lista. Basicamente o usuário não pode colocar valores que já tem na lista. Eu fiz o seguinte. Minha função igual que cuida disso, mas n esta dando certo.

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



struct elemento{
	struct elemento *prox;
	int numero;
	struct elemento *ant;
};

typedef struct elemento *lista;
typedef struct elemento Bloco;



int igual(lista *li,int num){
	Bloco *ant,*p=*li;
	while(p!=NULL ){
		if(num== p->numero){
			p->ant->prox = p->prox;
			if(p->ant == NULL){
				*li = p->prox;
			}	
		
		}
	p=p->prox;	
	}
	return num;
	
	/*if(p == NULL){
		return 0;
	}
	if(p->ant == NULL){
		*li = p->prox;
	}else{
		p->ant->prox = p->prox; 
	}
	free(p);*/
	
	//return li;
}


int Inserir(lista *li, Bloco num){
	if(li == NULL){
	return 0;
	}

	Bloco *no =(Bloco*)malloc(sizeof(Bloco));

	no->numero = igual(li,num.numero);
	no->prox = (*li);
	no->ant = NULL;
	if(*li!=NULL){
	(*li)->ant = no;
	}
	*li = no;
		
	return 1;

}


void imprime(lista *li){
	Bloco *p = *li;
	while(p->prox!=NULL){
	printf("%d->",p->numero);
	p = p->prox;
	}
}

int OrdemCrescente(lista *li){
	int n;
	Bloco *ant,*p = *li;
	while(p!=NULL){
	ant = p;
	while(ant !=NULL){
	if(ant->numero < p->numero){
	n = p->numero;
	p->numero = ant->numero;
	ant->numero = n;
	
	}
	ant = ant->prox;
	}
	p = p->prox;
	}
	return 1;
}

lista *criaLista(){
	lista *no=(lista *)malloc(sizeof(lista));
	if(no!=NULL){
	*no = NULL;
	}
	return no;
}



main(){

	lista *li =(lista *)malloc(sizeof(lista));
	*li = NULL;
	Bloco num;
	int x;
	do{
	printf("\n1- Adicionar\n");
	printf("2- Imprimir\n");
	scanf("%d",&x);
	if( x == 1){
	printf("Digite um numero:");
	scanf("%d",&num.numero);
	Inserir(li,num);
	OrdemCrescente(li);
	}else if( x == 2){
	imprime(li);
	}else{
	break;
	}
	
	}while(x!=3);
	
	









}

 

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!