Bom dia pessoal,
Estou com uma dúvida referente a Lista Simplesmente Encadeada em C que ta me matando. A lista ta funcionando perfeitamente, já criei as funções para inserir no inicio e final e para imprimir. Os números para iniciar a lista são obtidos após sorteio de números (função rand()) onde os números ímpares e pares devem ser inseridos a esquerda e direita respectivamente, e após a lista deve ser impressa. Até aí tudo bem. O problema está na função para pesquisar um numero digitado pelo usuário, onde se o numero existir na lista deverá retornar para o usuário a posição que o número está na lista. (o valor deverá ser lido na main e passado por parâmetro para a Função de pesquisa). Se alguém puder dar uma mão aí agradeço. Segue o código...
#include <stdlib.h>#include <stdio.h>#include <math.h>#include <conio.h>struct nodo{ int dados; struct nodo *prox; };int InsereEsquerda (struct nodo **inicio, int valor){ // função recebe como parâmetro o ponteiro (ptri) e o valor inteiro struct nodo *novo=NULL; novo=(struct nodo *)malloc(sizeof(struct nodo)); if (novo != NULL){ novo->dados=valor; novo->prox=*inicio; *inicio=novo; } else printf("Nao foi possivel alocar\n");}//fim da função insereEsquerdaint InsereDireita(struct nodo **inicio, int valor){ // função recebe como parâmetro o ponteiro (ptri) e o valor inteiro struct nodo *novo=NULL, *aux=NULL; novo=(struct nodo *)malloc(sizeof(struct nodo)); if(novo != NULL){ novo- dados = valor; novo->prox=NULL; if(*inicio == NULL) *inicio=novo; else{ aux=*inicio; while(aux->prox != NULL){ aux = aux->prox; } aux->prox=novo; } } else printf("\nNao foi possivel alocar");}//fim da funçao insere_direitaint ImprimeLSE(struct nodo **inicio){ struct nodo *aux=NULL; if(*inicio!=NULL){ aux=*inicio; while(aux != NULL){ printf("%i\t", aux->dados); aux=aux->prox; } } else printf("\nLista Vazia\n");}// fim da função ImprimeLSEint main(){ struct nodo *ptri=NULL; // Inicialização do ponteiro *ptri como nulo int i, nro, num; for(i=0; i<TAM; i++){ nro = rand()%51; // sorteio dos 20 numeros if(nro %2 == 0){ // se par inserir a direita InsereDireita(&ptri, nro); } else { // se impar inserir a esquerda InsereEsquerda (&ptri, nro); } } ImprimeLSE(&ptri); //impressão da lista printf("\n\nInforme um número para pesquisar na Lista: "); scanf("%i", &num); //se o numero digitado estiver na lista... printf("\n\nPosição %i da Lista", ??????? ); //se o numero digitado não estiver na lista printf("\n\nO número informado não está na lista"); getch();}