1
« en: Miércoles 30 de Marzo de 2011, 18:04 »
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");
}