listas.h:
main.c:/* header para el manejo de listas.... desarrollado por kellerman rivero krsloco@gmail.com bajo licencia creative commons, el manejo de listas, realizando algoritmos convencionales y algoritmos recursivos UNELTCA 2010 Prog II */ #include <stdio.h> #include <stdlib.h> typedef struct lista_simple { int info; struct lista_simple *sig; } lista; lista *inicializar_lista(){ return NULL; } lista *solicitar_nodo (){ return ((lista *)malloc(sizeof(lista))); } lista *insertar_inicio (lista *inicio, int valor){ lista *q; if((q = solicitar_nodo())!=NULL){ q -> info = valor; q -> sig = inicio; inicio = q; } else printf("Memoria no Disponible \n"); return inicio; } lista *eliminar_inicio (lista *inicio){ if (inicio != NULL){ lista *q; q = inicio; inicio = inicio->sig; free(q); return inicio; } else return NULL; } lista *insertar_final (lista *inicio, int valor){ if (inicio != NULL){ lista *q,*w; w = inicio; while ( w->sig != NULL) w = w->sig; if((q = solicitar_nodo())!=NULL){ q -> info = valor; q -> sig = NULL; w -> sig = q; } else printf("Memoria no Disponible \n"); return inicio; } else { inicio = insertar_inicio(inicio,valor); return inicio; } } lista *eliminar_final (lista *inicio){ if (inicio != NULL){ lista *q, *w; q = inicio, w = inicio; while (w->sig != NULL){ q = w; w = w -> sig; } q -> sig = NULL; free(w); return inicio; } else return NULL; } void imprimir_lista (lista *inicio){ if (inicio != NULL){ int n=1; printf("Nodo[%d] - Valor: %d\n",n,inicio->info); while (inicio->sig != NULL){ n++; inicio = inicio -> sig; printf("Nodo[%d] - Valor: %d\n",n,inicio->info); } } else { printf("Lista Vacia \n"); } } lista *eliminar_final_r (lista *inicio){ if(inicio != NULL){ if (inicio->sig != NULL) { lista *q; q = eliminar_final_r(inicio->sig); inicio->sig = q; } else { free(inicio); return NULL; } } else return NULL; } lista *insertar_final_r(lista *inicio, int valor){ if(inicio != NULL){ lista *q; if(inicio -> sig == NULL){ if((q = solicitar_nodo())!=NULL){ q -> info = valor; q -> sig = NULL; inicio->sig = q; } else { printf("Memoria no Disponible \n"); return NULL; } } else { q = insertar_final_r(inicio->sig,valor); inicio->sig = q; } } else { return insertar_inicio(inicio,valor); } }
/* Programa para el manejo de listas.... desarrollado por kellerman rivero krsloco@gmail.com bajo licencia creative commons, el manejo de listas, realizando algoritmos convencionales y algoritmos recursivos UNELTCA 2010 Prog II */ #include <stdio.h> #include <stdlib.h> #include "listas.h" #define for_x for(x=0; x<N; x++) int main(){ lista *P; int N,valor,x; P = inicializar_lista(); printf("Introduzca la cantidad de nodos: "); scanf("%d",&N); for_x{ system("cls"); printf("Introduzca el valor para el nodo[%d]: ",x+1); scanf("%d",&valor); P = insertar_inicio(P,valor); } imprimir_lista(P); P = eliminar_inicio(P); P = eliminar_final_r(P); getch(); system("cls"); imprimir_lista(P); return 0; }
0 comentarios:
Publicar un comentario