• Sábado 14 de Diciembre de 2024, 23:37

Autor Tema:  error  (Leído 1014 veces)

herley

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
error
« en: Miércoles 30 de Marzo de 2011, 18:04 »
0
saludo.
este es mi cod de lista; pasa que cuaando termino de guardar los elementos que recibe se muere el programa; si me pueden colaborar les agradeceria mucho..

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

typedef int tipo_dato;
//typedef int posicion;


typedef struct ListaNodo{    //define una lista de nodos
         int numNodoInfo;
         struct ListaNodo *sig;
         } *pListaNodo;


typedef struct{
        pListaNodo cabeza,primero,ultimo;
        int longitud;
        } Tlista, *Lista;
       
       
//typedef pListaNodo Ventana;

//typedef Lista lista;



Lista inicLista();
void anxLista(Lista lst);
void imprimir(Lista lst);

Lista inicLista (){ //inicializa una lista
       Lista resp;
       resp =(Lista)malloc(sizeof(Tlista)); //se reserva para resp el tamaño en bytes de Tlista
       resp->longitud= 0;
       resp->ultimo=NULL;
        return resp;
       }


int Llena(Lista lst){//comprueba si la lista esta llena
  if(lst->cabeza==lst->ultimo)
   return(1);
  else
   return(0);
  }
 
int vacia(Lista lst){//comprueba si la lista esta vacia
   if(lst->longitud==0)
   return 1;
   else
   return 0;
}  
pListaNodo finLista(Lista lst){
           return (lst->ultimo);
           }

pListaNodo Ultimo(Lista L) {
  return(L->ultimo);
  }    
 
int Primero(Lista lst){
          if(vacia(lst))
          return -1;
          else
          return 0;
}          
                       
         
/*void Elementos(Lista L){
int n,i;
tipo_dato x;
system("cls");
  printf("¨Cu ntos elementos deseas insertar a la lista?n");
  scanf("%d", &n);
  for (i=1; i<=n; i++){
   printf("nElemento %d: n",i);
   scanf("%d", &x);
   }
   system("cls");
  // Imprime(L);
   getch();
}*/
             
             
             
int menu();
             
int main(){
    int opc, band;
    Lista lista;
   //lista->longitud = 0;

    do{
    band=1;
    opc=menu();
   
   
   
    switch(opc){
               
                case 1:{
                   lista->longitud = 0;
                   //anxLista(lista);
                     break;
                     }
                case 2:{
                     
                    system("cls");
                          anxLista(lista);
                          getch();
                     break;
                     }
                     case 3:{
                             imprimir(lista);
                          break;
                          }
                          case 4:{
                               band=0;
                               break;
                }
                }
        }while(band ==1);

}

             

int menu(){
 int c;
 system("cls");
 printf("nn    M  E  N  U     ");
// printf("n 1.-  para empezar elige opcion 1nn");
 printf("n 2.-para anexar un elemto elige la opcion  2nn");
 printf("n 3.- para imprimir elige la opcion 3nn");
 printf("n 4.- salir elige 4nn");
  printf("nnnn Elige una opcion");
 scanf("%d",&c);
 //system ("pause");
 return(c);
}


void anxLista( Lista lst){    //agrega un elemento despues de la ventana
             

              int v,n,i;
              printf("cuantos elementos desea ingresar");
              scanf("%d",&n);
             
              for(i=1;i<=n;i++){
                   
              printf("ingrese el valor %d  ",i);
              scanf("%d",&v);
              }
             
              pListaNodo nuevo = (pListaNodo)malloc( sizeof( struct ListaNodo));
              nuevo->numNodoInfo = v;
              nuevo->sig = NULL;
              pListaNodo tmp  = lst->cabeza;

             
             
                 
              lst->cabeza = nuevo;
              lst->ultimo=nuevo;
              //lst-> longitud++;
             
             
              }
              else{
                   while(tmp->sig!=NULL){
                      tmp = tmp->sig;  
                    }
                    tmp->sig = nuevo;
                    lst->ultimo->sig = nuevo;
                    lst->ultimo = nuevo;
                    lst-> longitud++;
             }
             
             //system ("pause");
             }
             
void imprimir(Lista lst){
    int i;
    pListaNodo tmp = lst->cabeza;
    if(vacia(lst)==1){
        printf("la lista esta vacia");
    }else{                  
                      //tmp=lst->ventana;
                      while(tmp!=NULL){
                           
                           
                                        printf("%dn",tmp->numNodoInfo);
                                        tmp=tmp->sig;
                                        //lst=lst->ventana->sig;
                                        }
                      }
                      // system ("pause");
    }