fulgore_23 Posted November 24, 2010 Report Share Posted November 24, 2010 (edited) 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"); } Edited November 24, 2010 by fulgore_23 Link to comment Share on other sites More sharing options...
Master Joohny Posted November 24, 2010 Report Share Posted November 24, 2010 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 More sharing options...
fulgore_23 Posted November 24, 2010 Author Report Share Posted November 24, 2010 esa funcion se supone que está bien.. por que la hicimos en clase.. alguna ayuda como hacer que no me tire el error? Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now