Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Conte

Lista Ordenada

Recommended Posts

Estou com problema na criacao deste programa de lista ordenada

por favor ajudem !!!

 

 

Desenvolver um programa que implemente uma Lista Ordenada, com funções para:

· Inserir elementos

· Mostrar Elementos

· Remover um elemento

· Pesquisar elemento

 

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

//DEFINIÇÃO DA ESTRUTURA DO NÓ
struct no{
 int info;
 struct no *prox;
};
//CRIAÇÃO DO TIPO LISTA
typedef struct no *Lista;

Lista Removeall(Lista x);
Lista Inicio(Lista x, int num);
void Inserir(Lista x,int num);

//INICIO FUNÇÃO PRINCIPAL
int main()
{
   Lista L;  //DECLARANDO VARIÁVEL QUE FARÁ CONTROLE DA LISTA
   int num=1;
   char op;
printf("BEM VINDO!\n");
   L = NULL; //INICIALIZANDO A LISTA
   L = Inicio(L,num);

	do
	{
	system("CLS"); //limpa tela

	//mostra o menu
 	printf("\nLISTA ENCADEADA ORDENADA\n\n");
 	printf("1) Inserir elementos\n");
 	printf("2) Mostrar Elementos\n");
 	printf("3) Remover um elemento \n");
		printf("4) Pesquisar elemento\n");
 	printf("5) Sair\n");
 	printf("Opcao: ");
 	op = getch(); //le opcao escolhida

		printf("\n\n");

		//verifica qual caracter foi digitado
 	switch (op)
 	{
		case '1':
           {     
               system("cls");
			printf("Digite o elemento a inserir na lista ou (-1) p finalizar:\n ");
               scanf("%d",&num);
               Inserir(L,num);

			break;
           }
           case '2':
           { 


                break;
           }    
           case '3':
           {

                break;
           }    
           case '4':
           {

                break;
           }                 
			default: //QUALQUER CARACTER
		break;
	}
}
while (op != '5'); //executa o DO enquanto a opcao escolhida for diferente de 8

L = Removeall(L);

printf("\nESTRUTURA DE DADOS I \nLISTA ENCADEADA ORDENADA!\n");
	system("PAUSE");
return 0;
}

Lista Inicio(Lista x, int num){

Lista y;
y= (Lista) malloc(sizeof(Lista));
y->info = num;
y-> prox = NULL;
return y;
}


void Inserir(Lista x,int num) {
                Lista p;
                p=(Lista) malloc(sizeof(Lista));
                p->info=num;
                   p->prox = x->prox;
                while (x->prox != NULL)
                  	{

                           x=x ->prox;
                  	}

                   x-> prox = p;

}




Lista Removeall(Lista x)
{
 Lista i;

 while ( x != NULL)
 {
   i = x->prox;
   free(x);
   x = i;
 }
 return x;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fale mais sobre...

Qual o problema em especifico?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fale mais sobre...

Qual o problema em especifico?

na verdade, estou apanhando para criar de forma ordenada a lista e nao sei como depois procurar, tem como ajudar cara a desvendar este misterio?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, eu fiz um deverzinho desse a poco tempo. Vo dar uma lida e vo dizer as paradas que podem estar dando erro (por estarem erradas).

 

EDIT:

 

Seguinte, pra fazer a lista você não precisa criar 2 structs. Apenas declare uma e logo após a ela você declara um ponteiro para o inicio.

 

struct no{
 int info;
 struct no *prox;
};
no *inicio;

 

Se você quiser inserir de forma ordenada, crie uma função que ira comparar a info e ver aonde você precisa inserir. Caso só queira inserir no final, faça uma função pra voce achar qual ultimo elemento (faça com que a função va procurando o elemento cujo ponteiro que aponta para o proximo seja NULL, ai voce altera o NULL para o novo elemento e dexa o novoelemento->prox =NULL)

 

Não sei se ajudei rs. Se quiser um programinha exemplo meu, por favor peça.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.