Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayudas con listas doblemente enlazadas

Estas en el tema de Ayudas con listas doblemente enlazadas en el foro de C/C++ en Foros del Web. Tengo un programa para mostrar como se manejan las listas enlazdas o como funiona, pero tengo un error y no se que sea lo que ...
  #1 (permalink)  
Antiguo 02/06/2008, 17:25
 
Fecha de Ingreso: junio-2007
Mensajes: 2
Antigüedad: 16 años, 10 meses
Puntos: 0
Ayudas con listas doblemente enlazadas

Tengo un programa para mostrar como se manejan las listas enlazdas o como funiona, pero tengo un error y no se que sea lo que este pasando, si aguien me puede ayudar le agradeceria mucho

estos son los errores que me salen!!!


Compiling LISTAS55.CPP:
Error LISTAS55.CPP 13: Undefined symbol 'item'
Error LISTAS55.CPP 49: Function 'insfirstd' should have a prototype
Error LISTAS55.CPP 55: Function 'inslastd' should have a prototype
Error LISTAS55.CPP 111: Function 'search' should have a prototype
Error LISTAS55.CPP 120: Function 'insafterd' should have a prototype
Error LISTAS55.CPP 141: Function 'insbefored' should have a prototype
Error LISTAS55.CPP 192: Function 'delfirstd' should have a prototype
Error LISTAS55.CPP 200: Function 'dellastd' should have a prototype
Error LISTAS55.CPP 218: Function 'delafterd' should have a prototype
Error LISTAS55.CPP 238: Function 'delbefored' should have a prototype
Error LISTAS55.CPP 270: Function 'imprilistd' should have a prototype
Error LISTAS55.CPP 276: Function 'dellistd' should have a prototype




Código PHP:
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <listas.h>

 
void salir();

 
void main()

 {
    
int opc,n,a,i,opc2,m,x,opc3,cont=0;
    
int q0;
    
item *q;
    do

    {

     
clrscr();
     
printf("\n\n\t\tPROGRAMA QUE MANIPULA LISTAS DOBLEMENTE ENLAZADAS");
     
gotoxy(27,6);
     
printf(" 1. Crear una lista");
     
gotoxy(27,8);
     
printf(" 2. Insertar un elemento en la lista");
     
gotoxy(27,10);
     
printf(" 3. Eliminar un elemento de la lista");
     
gotoxy(27,12);
     
printf(" 4. Imprimir la lista");
     
gotoxy(27,14);
     
printf(" 5. Eliminar la lista ");
     
gotoxy(27,16);
     
printf(" 6. Salir");
     
gotoxy(27,18);
     
printf(" ESCOJA UNA OPCION: ");
     
scanf("%d", &opc);

     switch (
opc)

        {

         case 
1:
         
clrscr();
         
printf("\n\n\t\t\t\t 1. CREAR LISTA\n\n");
         
item *h;
         
h=0;
         
printf("Cuantos elementos desea ingresar a la lista\n");
         
scanf("%d",&n);
         
printf("Digite el elemento numero 1\n");
         
scanf("%d",&a);
         
insfirstd(&h,a);
         for(
i=2;i<=n;i++)

          {
            
printf("Digite el elemento numero %d\n",i);
            
scanf("%d",&a);
            
inslastd(&h,a);
          }

         
cont=1;
         break;

         case 
2:
         do

          {

            
clrscr();
            
printf("\n\n\t\t\t 2. INSERTAR UN ELEMENTO EN LA LISTA");
            
gotoxy(19,6);
            
printf(" 1. Insertar un elemento al principio de la lista");
            
gotoxy(19,8);
            
printf(" 2. Insertar un elemento al final de la lista");
            
gotoxy(19,10);
            
printf(" 3. Insertar un elemento despues de un dato");
            
gotoxy(19,12);
            
printf(" 4. Insertar un elemento antes de un dato");
            
gotoxy(19,14);
            
printf(" 5. Regresar al menu principal");
            
gotoxy(19,16);
            
printf(" ESCOJA UNA OPCION: ");
            
scanf("%d", &opc2);

            switch (
opc2)

            {

             case 
1:
             
clrscr();
             
printf("\n\n\t\t1. INSERTAR UN ELEMENTO AL PRINCIPIO DE LA LISTA\n\n");
             
printf("Digite el elemento que desea insertar\n");
             
scanf("%d",&m);
             
insfirstd(&h,m);
             
printf("El elemento fue insertado");
             
getch();
             break;

             case 
2:
             
clrscr();
             
printf("\n\n\t\t2. INSERTAR UN ELEMENTO AL FINAL DE LA LISTA\n\n");
             
printf("Digite el elemento que desea insertar\n");
             
scanf("%d",&m);
             
inslastd(&h,m);
             
printf("El elemento fue insertado");
             
getch();
             break;

             case 
3:
             
clrscr();
             
printf("\n\n\t\t3. INSERTAR UN ELEMENTO DESPUES DE UN DATO\n\n");
             
printf("Digite el dato donde usted quiere insertar el elemento\n");
             
scanf("%d",&x);
             
q=search(h,x);

             if(
q==0)
                
printf("El elemento no fue encontrado y no se puede insertar");
             else

                {
                 
printf("Digite el elemento a insertar\n");
                 
scanf("%d",&m);
                 
insafterd(&h,x,m);
                 
printf("El elemento fue insertado");
                }

             
getch();
             break;

             case 
4:
             
clrscr();
             
printf("\n\n\t\t4. INSERTAR UN ELEMENTO ANTES DE UN DATO\n\n");
             
printf("Digite el dato donde usted quiere insertar el elemento\n");
             
scanf("%d",&x);
             
q=search(h,x);

             if(
q==0)
                
printf("El elemento no fue encontrado y no se puede insertar");
             else

                {
                 
printf("Digite el elemento a insertar\n");
                 
scanf("%d",&m);
                 
insbefored(&h,x,m);
                 
printf("El elemento fue insertado");
                }

             
getch();
             break;

             case 
5:
             break;

             default:
             
clrscr();
             
gotoxy(31,10);
             
printf("LA OPCION NO ES VALIDA ");
             
gotoxy(24,12);
             
printf("\aPRESIONE UNA TECLA PARA VOLVER AL MENU");
             
getch();
             break;

            }
          }

    while(
opc2 != 5);
         break;

         case 
3:
         do

          {
            
clrscr();
            
printf("\n\n\t\t\t 3. ELIMINAR UN ELEMENTO DE LA LISTA");
            
gotoxy(19,6);
            
printf(" 1. Eliminar un elemento al principio de la lista");
            
gotoxy(19,8);
            
printf(" 2. Eliminar un elemento al final de la lista");
            
gotoxy(19,10);
            
printf(" 3. Eliminar un elemento despues de un dato");
            
gotoxy(19,12);
            
printf(" 4. Eliminar un elemento antes de un dato");
            
gotoxy(19,14);
            
printf(" 5. Regresar al menu principal");
            
gotoxy(19,16);
            
printf(" ESCOJA UNA OPCION: ");
            
scanf("%d", &opc3);

            switch (
opc3)

            {
             case 
1:
             
clrscr();
             
printf("\n\n\t\t1. ELIMINAR UN ELEMENTO AL PRINCIPIO DE LA LISTA\n\n");
             
delfirstd(&h);
             
printf("El elemento fue eliminado");
             
getch();
             break;

             case 
2:
             
clrscr();
             
printf("\n\n\t\t2. ELIMINAR UN ELEMENTO AL FINAL DE LA LISTA\n\n");
             
dellastd(&h);
             
printf("El elemento fue eliminado");
             
getch();
             break;

             case 
3:
             
clrscr();
             
printf("\n\n\t\t3. ELIMINAR UN ELEMENTO DESPUES DE UN DATO\n\n");
             
printf("Digite el dato donde usted quiere eliminar\n");
             
scanf("%d",&x);
             
q=search(h,x);

             if(
q==0)
             
printf("El elemento no fue encontrado y no se puede eliminar");

             else

             {
              
delafterd(&h,x);
              
printf("El elemento fue eliminado");
             }

             
getch();
             break;

             case 
4:
             
clrscr();
             
printf("\n\n\t\t4. ELIMINAR UN ELEMENTO ANTES DE UN DATO\n\n");
             
printf("Digite el dato donde usted quiere eliminar\n");
             
scanf("%d",&x);
             
q=search(h,x);

            if(
q==0)
            
printf("El elemento no fue encontrado y no se puede elimimar");

            else

            {
             
delbefored(&h,x);
             
printf("El elemento fue eliminado");
            }

            
getch();
            break;

            case 
5:
            break;

            default:
            
clrscr();
            
gotoxy(31,10);
            
printf("LA OPCION NO ES VALIDA ");
            
gotoxy(24,12);
            
printf("\aPRESIONE UNA TECLA PARA VOLVER AL MENU");
            
getch();
            break;

          }
         }
    while(
opc3 != 5);
        break;

        case 
4:
        
clrscr();
        
printf("\n\n\t\t\t4. IMPRIMIR LA LISTA\n\n");
        if(
cont==0)
        
printf("La lista no se puede imprimir porque ha sido borrada\n");

        else

        
imprilistd(h);
        
getch();
        break;

        case 
5:
        
clrscr();
        
dellistd(&h);
        
printf("\n\n\t\t\t5. ELIMINAR LA LISTA\n\n");
        
printf("Lista borrada");
        
cont=0;
        
getch();
        break;

        case 
6:
        
clrscr();
        
dellistd(&h);
        
salir();
        
getch();
        break;

        default:
        
clrscr();
        
gotoxy(31,10);
        
printf("LA OPCION NO ES VALIDA ");
        
gotoxy(24,12);
        
printf("\aPRESIONE UNA TECLA PARA VOLVER AL MENU");
        
getch();
        break;

     }
    }

    while(
opc != 6);
  } 

Última edición por nn176; 02/06/2008 a las 17:34
  #2 (permalink)  
Antiguo 03/06/2008, 15:52
 
Fecha de Ingreso: septiembre-2007
Mensajes: 52
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Ayudas con listas doblemente enlazadas

Cita:
Iniciado por nn176 Ver Mensaje
estos son los errores que me salen!!!


Compiling LISTAS55.CPP:
Error LISTAS55.CPP 13: Undefined symbol 'item'
Error LISTAS55.CPP 49: Function 'insfirstd' should have a prototype
Error LISTAS55.CPP 55: Function 'inslastd' should have a prototype
Error LISTAS55.CPP 111: Function 'search' should have a prototype
(..)
Al parecer el problema está en que el compilador no encuentra el archivo listas.h, en donde supongo que se definen cosas como el tipo 'item', y las funciones insfirstd(), inslastd(), etc.

Recuerda que al usar la directiva #include con menor-que y mayor-que, el compilador busca el archivo de cabecera en las rutas predeterminadas en donde se instalan los archivos cabecera estándar de C/C++ (esas rutas dependen del sistema en el que estés trabajando).

Si tienes el archivo listas.h en la misma carpeta que tu archivo .cpp, puedes usar las comillas dobles y así el compilador sabe que debe buscarlo en la misma ruta:

Código:
#include "listas.h"
También hay que tener en cuenta que al usar una biblioteca externa (como en tu caso se hace con listas.h), debes enlazar el archivo binario de esa biblioteca a la hora de compilar tu programa. Es decir, el compilador debe poder encontrar un archivo con nombre listas.lib (o listas.a, u otra extensión dependiendo del sistema en el que estés trabajando) para enlazar su contenido con tu programa, de modo que las funciones como insfirstd() realmente funcionen.
  #3 (permalink)  
Antiguo 07/06/2008, 20:37
 
Fecha de Ingreso: junio-2008
Mensajes: 5
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayudas con listas doblemente enlazadas

creo que si usas <archivo.h> no te va a compilar. por que solo se utiliza para librerias que ya vienen en el compilador (como stdlib, string, entre otras ), tus propios archivos de encabezado tenes que agregarlos con " " , el motivo verdaderamente no lo se, pero fijate si con eso anda.
el error del compilador te indica que no estan declarados los prototipos de las funciones. acordate que en C para usar una funcion primero tenias que escribir el nombre y los parametros (es decir, el prototipo), y luego volver a escribir lo mismo pero declarando la funcion.
ejemplo :

void suma(int n1 ,int n2) ;

void suma(int n1,int n2)
{

...

}

en C++ pasa lo mismo, y el error es por que no estas incluyendo bien el archivo.h
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:57.