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?
#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?