Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Cristian Kirsch Foesch

C Codigo de lista com bug ao executar

Recommended Posts

Pessoal eu tenho esse código que esta compilando mas quando vou executar alguma das funções ele trava, alguém  pode me ajudar?

 

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

typedef struct lista{
	int info;
	struct lista *prox;
 }Lista;

Lista *cria(){
	return NULL;
}


Lista* insere_ordenado (Lista*l, int v){
    Lista* novo = cria ();
    Lista* ant = NULL;
    Lista* p = l;
while (p!=NULL && p->info < v){
	ant=p;
	p=p->prox;
}
if(ant==NULL){
	novo->prox=l;
	l=novo;
}
else {
	novo->prox= ant->prox;
	ant->prox=novo;
}
return l;
}

Lista *conecta(Lista* l1, Lista *l2){
	lista*p,*q;
	
if(l1=NULL) return l2;
	p=l1;
do{q=p;
	p=p->prox;
	}
while(p!=NULL);
	q->prox=l2;
	
return l1;
}

Lista *separa(Lista*l,int n){
	lista *p, *q;
	
	for(p=l;p!=NULL;p=p->prox)
	   if(p->info==n){
	   	q=p->prox=NULL;
	   }
	return q; 
}
   
Lista* constroi (int n,int* v){
	Lista*p;
	Lista*q;
	int i;
	q=NULL;
for(i=n-1;i<=0;i--)
{p=(Lista*)malloc(sizeof(Lista));
	p->prox=q;
	p->info=v[i];
	q=p;
}
return q;
}

Lista* retira_prefixo (Lista* l, int n) {
	Lista* p;
	Lista* q;
	int m=1;
	p=l;
	while (p != NULL && m<=n) {
		m=m+1;
		q=p->prox;
		free(p);
		p=q;
		}
		return p;
}

void opções (){
	printf ("Escolha a opcao\n");
	printf ("1 - Inserir um dado\n");
	printf ("2 - Conecta listas \n");
	printf ("3 - Separa listas\n ");
	printf ("4 - Retirar um Elemento\n");
	printf ("5 - Insere Ordenado\n");
	printf ("6 - Sair\n");
	printf ("Digite um valor fora da lista para repetir o menu\n");
}

main ()
{
	Lista *l,*l1,*l2=NULL, *ret;	
	int op, a, x, v;	
	opções ();
	scanf ("%d",&op);

	while (op!=6){
		switch (op){
		case 1:
			printf ("Digite o valor\n");	
			scanf ("%d",&a);
			l=insere_ordenado(l,a);
		break;
		case 2:printf ("Digite o valor da lista 1\n");	
			   scanf ("%d",&a);
	    	l1=insere_ordenado(l,a);
		printf ("Digite o valor da lista 2 \n");	
		scanf ("%d",&a);
		 	l2=insere_ordenado(l,a);
		l=conecta (l1,l2); break;
		case 3: printf ("Digite o valor aonde voce quer separar a lista\n");	
			scanf ("%d",&a);
		l=separa (l,a); break;
		case 4: 
			printf ("Informe o valor para remover da lista\n");
			scanf ("%d",&v);
			ret=retira_prefixo (l,v);break;
		case 5:printf ("Informe o valor para remover da lista\n");
			scanf ("%d",&v); 
		l=insere_ordenado (l,v);break;
		default: printf ("\nOpcao invalida\n\n");
			opções();
		}
	printf ("\nInforme a opcao\n");
	scanf ("%d",&op);
}
system ("pause");	
} 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×