Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: oscar.trevino en 5 Marzo 2017, 04:22 am



Título: Ayuda con colas en c++
Publicado por: oscar.trevino en 5 Marzo 2017, 04:22 am
Hola, tengo una duda en un programa que ingrese datos al inicio de la cola y elimine al final. Éste es mi código:

#include<stdio.h>
#include<cstdlib>
#include<conio2.h>

struct nodo{
   int dato;
   int *p,*q,*t;
};

int op,num,p,s,q,n,t;
void insertar();
void eliminar();
void finalizar();

main()
{
   do
   {
      printf("1.- Insertar datos\n");
      printf("2.- Borrar datos\n\n");
      printf("Que opcion desea?");
      scanf("%d",&op);
   
      switch(op)
      {
         case 1: insertar(); break;
         case 2: eliminar(); break;
         case 3: finalizar(); break;
      }
   }
   while(op!=4);
   finalizar();
}

void insertar()
{
   p=malloc(sizeof(struct nodo));
   printf("Captura dato...");
   scanf("%d",&num);
   p->info=num;
   p->liga=NULL;
   printf("Mas nodos? [s/n]");
   while(getche()==s){
      printf("Captura dato...");
      scanf("%d",&num);
      q->info=num;
      q->liga=p;
      p=q;
      printf("Mas nodos?" [s/n]?);
   }
}

void eliminar()
{
   if(p==NULL)
   {
      printf("Vacío");
   }
   else
   {
      q=p;
      if(p->liga==NULL)
      {
         p=NULL;
      }
      else
      {
         while(q->liga!=NULL)
         {
            t=q;
            q=q->liga;
         }
         t->liga=NULL;
         free(q);
      }
   }
}



Y los errores que me marca son los siguientes:
46 4 C:\Users\Oscar Treviño\Desktop\Colass.cpp [Error] base operand of '->' is not a pointer
55 8 C:\Users\Oscar Treviño\Desktop\Colass.cpp [Warning] NULL used in arithmetic [-Wpointer-arith]
74 10 C:\Users\Oscar Treviño\Desktop\Colass.cpp [Error] invalid conversion from 'int' to 'void*' [-fpermissive]

Literal, tengo todo el día con este programa, me podrían ayudar?


Título: Re: Ayuda con colas en c++
Publicado por: MAFUS en 5 Marzo 2017, 12:58 pm
Esos errores te que indica el compilador precisamente te marcan el fallo.

Usas variables globales que son enteros p y q como punteros a la estructura. Esto es un problema de tipos que deberías solucionar.

Por otra parte usas los miembros de la estructura info y liga cuando estos no existen en ella. En tu estructura tienes definidos los miembros int dato, *p, *q y *t. Por cierto *p, *q y *t son punteros a entero, no deberían ser usados para guardar la dirección de la estructura dato, como intuyo pretendes hacer.