//lista.cpp #include <stdio.h> #include <stdlib.h> #include <conio.h> typedef struct nodo { int elem; struct nodo *sig; } tipoNodo; typedef tipoNodo *pNodo; typedef tipoNodo *lista; lista l; void insertar(int n, lista* l); void borrar(int n, lista* l); int listaVacia(lista* l); void borrarLista(lista* l); void mostrarLista(lista* l); int main() { l=NULL; char opcion='1'; int n; while (opcion!='t') { printf("\n"); printf("Manejo de listas\n\n"); printf("(i) insertar en la lista\n"); printf("(l) listar elementos\n"); printf("(b) borrar uno\n"); printf("(t) terminar\n"); printf("Elija una opción:\n"); scanf("%c",&opcion); printf("\n"); switch(opcion) { case 'i': printf("Ingrese el dato a insertar: "); scanf("%i",&n); insertar(n,&l); break; case 'b': printf("Ingrese un dato a borrar: "); scanf("%i",&n); borrar(n,&l); getch(); break; case 'l': printf("Contenido de la lista:\n"); mostrarLista(&l); getch(); break; case 't': borrarLista(&l); break; } } return 0; } void insertar(int n, lista* l) { pNodo nuevo=(pNodo)malloc(sizeof(tipoNodo)); nuevo->elem=n; if ((*l==NULL)|| (((*l)->elem) > n)) { nuevo->sig=*l; *l=nuevo; } else { pNodo anterior=*l; while(anterior->sig && anterior->sig->elem <= n) anterior = anterior -> sig; nuevo -> sig = anterior -> sig; anterior -> sig= nuevo; } } void borrar (int n, lista*l) { pNodo anterior; pNodo nodo; nodo=*l; anterior=NULL; while (nodo && nodo->elem<n) { anterior=nodo; nodo = nodo-> sig; } if (!nodo || nodo-> elem !=n) { printf("No fue encontrado"); return; } else { if (!anterior) *l=nodo->sig; else anterior->sig=nodo->sig; free(nodo); } } int listaVacia(lista*l) { return (*l==NULL); } void borrarLista (lista*l) { pNodo nodo; while (*l) { nodo=*l; *l=nodo->sig; free(nodo); } } void mostrarLista(lista* l) { pNodo nodo=*l; if (listaVacia(l)) printf("Lista vacia\n"); else { while (nodo) { printf ("%i,", nodo->elem); nodo=nodo->sig; } } } //Ejercicios: //1) hacer una función que halle el máximo de una lista //2) hacer una función que devuelva el penúltimo elemento de la lista, si no existe que imprima "la lista tiene menos de dos elementos" //3) hacer una función que devuelva la cantidad de elementos de una lista //4) hacer una función que intercambie los dos primeros elementos si es que la lista tiene por lo menos dos elementos, sino imprime "la lista tiene menos de dos elementos" //5) hacer una función que borre el primer elemento de una lista. Si no tiene elementos imprime "la lista no tiene elementos"
participants (1)
-
Federico Kouyoumdjian