Programación General > C++ Builder

 Codigo en C se agradece colaboracion!

(1/1)

iic610:
Se supone que mi programa mediante la utilizacion de una lisa doblemente enlazada le permite introducir al usuario palabras por teclado,mostrar la lista y borrar la palabra indicada!Ya no se si el fallo es del menu o del propio codigo del programa xo solamente me coge dos de las opciones posibles q ofrece mi menu!!Porfa necesito ayuda!Gracias!


--- Código: Text ---#include <stdio.h>#include <stdlib.h>#include <string.h>#define NILL 0 struct lista_elementos {    char carac[40];    struct lista_elementos *sig;    struct lista_elementos *ant;};typedef struct lista_elementos nodo;int menu (void);nodo *crear (nodo *pt);nodo *buscar_palabra (nodo *lista);nodo *borrar_palabra (nodo *lista,nodo *primero);void mostrar_lista (nodo *lista);main () {    nodo *lista;    nodo *primero;    int eleccion;    do {        eleccion = menu();        switch (eleccion) {            case 1 : //crear la lista doblemente enlazada                lista = (nodo *) malloc (sizeof(nodo)); //reserva el espacio para el primer nodo                crear(lista);                break;            case 2 : //muestra la lista                mostrar_lista(lista);                break;            case 3 : //borra el componente que corresponde a la palabra                lista = borrar_palabra(lista,primero);                break;            default: //finalizar                printf("Fin de las operacionesn");        }    } while (eleccion != 4);} int menu(void) {    int eleccion;    do {        printf("nMenu principaln");        printf("1. Crea la lista doblemente enlazadan");        printf("2. Muestra la listan");        printf("3. Borra el componente que corresponde a la palabra buscadan");        printf("Elija la opcionn: ");        scanf("%d",&eleccion);        setbuf(stdin,NULL);        if (eleccion<1 || eleccion>4) {            printf("n El valor introducido no se corresponde con ninguna");            printf("nde las posibilidades del menu. Intentelo de nuevo n");        }    } while (eleccion<1 || eleccion>4);    return(eleccion);} nodo *crear (nodo *lista) {    printf("Introduce la palabra que quieres meter en la lista(para terminar FIN)n: ");    setbuf(stdin,NULL);    scanf("%[^n]",lista->carac);    if (strcmp (lista->carac,"FIN") == 0) {        lista->sig=NULL;        lista->ant=NULL;    }    else {        lista->sig=(nodo *) malloc (sizeof(nodo));        crear(lista->sig);    }return(lista);} nodo *borrar_palabra (nodo *lista,nodo *primero) {    primero = buscar_palabra(lista);    if (primero != NULL) {        if (primero->sig == NULL) {            primero->ant->sig=NULL;            free(primero);        }        else {            if (primero == lista) {                lista=primero->sig;                free(primero);            }            else {                primero->ant=primero->sig;                free(primero);            }        }    }    else        printf("No hay nada que borrarn");    return(lista);} nodo *buscar_palabra (nodo *lista) {    nodo *primero;    char palabra[40];    printf("Introduce la palabra que quieres que busque el programa: ");    scanf("%[^n]",palabra);    primero=lista;    while (primero != NULL) {        if (strcmp(primero->carac,palabra) != 0) {            primero=primero->sig;            return(NULL);        }        else {            printf("Palabra encontradan");            return(primero);        }    }} void mostrar_lista (nodo *lista) {    if (lista->sig != NULL) {        printf("%sn",lista->carac);        mostrar_lista(lista->sig);    }} 

Eternal Idol:
Depuralo.

Navegación

[0] Índice de Mensajes

Ir a la versión completa