Jump to content

ayuda programa en C


Recommended Posts

tengo el siguiente programa que hace esto ( o deberia hacer esto) :

 

implementar LISTA ALACRAN a través de un menú

 

a) Agregar un elemento en una lista alacrán (no importa donde)

 

b) Mostrar todos los elementos de la lista

 

c) Contar elementos de la lista

 

d) Buscar elemento dado en la lista

 

y ya hice el siguiente codigo pero al momento de ejecutar la funcion ''mostraralacran'' y ''contaralacran'' me tira un error y la ventana se cierra.. alguna ayudita de que puede ser??

 

aqui esta el codigo:

 

 

#include<stdio.h>

#include<stdlib.h>

 

typedef struct nodo{

int info;

struct nodo *link;

};

 

typedef nodo *lista;

 

int alacran( lista L)

{

lista p;

int c=0;

 

if (L != NULL)

{

p= L->link;

 

while (p->link !=p)

{

p= p->link;

}

}

 

}

 

int contaralacran(lista L)

{

lista p;

int c=0;

 

if (L != NULL)

{

c++,

p= L->link;

 

while (p->link !=p)

{

c++;

p= p->link;

}

}

return c;

}

 

int buscaralacran( lista *L, int e)

{

lista p;

int esta=0;

 

if (*L != NULL)

{

p= p -> link;

 

while (p->link !=p)

{

if(p->info==e)

{

esta=1;

}

p= p->link;

}

}

return esta;

}

 

void mostraralacran(lista L)

{

lista p;

p=L;

 

if(L!=NULL)

{

 

while (p->link !=p)

{

printf("%d\n",p->info);

p=p->link;

}

}

}

 

void agregaralacran(lista *L,int e)

{

lista p;

p=(lista)malloc(sizeof(nodo));

 

printf("Ingrese el elemento a ingresar: ");

scanf("%d",&e);

 

p->info=e;

p->link=*L;

*L=p;

}

 

int main()

{

lista L;

int e,n,i,x;

L=NULL;

 

do{

printf("\n Ingrese\n");

printf(" 1) Para agregar elemento a la lista\n");

printf(" 2) Mostrar todos los elementos de la lista\n");

printf(" 3) Contar los elementos de la lista\n");

printf(" 4) Buscar un elemento en la lista\n");

printf(" 0) Salir\n ");

printf("\n ");

scanf("%d",&n);

 

if(n==1)

{

printf("Cuantos elementos desea agregar?: ");

scanf("%d",&n);

 

for(i=0;i<n;i++)

{

 

agregaralacran(&L,e);

}

}

if(n==2)

{

mostraralacran(L);

}

if(n==3)

{

x=contaralacran(L);

printf("%d elementos",x);

}

if(n==4)

{

 

}

 

}while(n!=0);

 

 

 

system("pause");

}

 

:nose:

Edited by fulgore_23
Link to comment
Share on other sites

para contar los elementos de una lista simplemente enlazada es así:

 

 
int contar (struct tipo *lista)
{
      int cont=0;

      while(lista)
      {
            if(lista)
            {
                cont++;
            }

             lista=lista->link;
      }

      return cont
}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...