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

problemas con funciones

Estas en el tema de problemas con funciones en el foro de C/C++ en Foros del Web. tengo problemas con las funciones, al aser el programa sin funciones no tengo niun problema pero al momento de aser una funcion el compilador me ...
  #1 (permalink)  
Antiguo 28/04/2008, 12:18
 
Fecha de Ingreso: marzo-2008
Mensajes: 17
Antigüedad: 16 años, 2 meses
Puntos: 0
problemas con funciones

tengo problemas con las funciones, al aser el programa sin funciones no tengo niun problema pero al momento de aser una funcion el compilador me tira errores y warning
en la funcion insertar es donde tengo el problema y nose muy bn como trabaja la funcion si alguien me pudiera explicar o arreglar esa funcion, tambien intente aser una funcion para mostrar la lista pero tampoko me funciono.
gracias



#include<stdio.h>
#include<stdlib.h>
#include<conio.h>


typedef struct nodo
{
int valor;
struct nodo *siguente;
}tiponodo;




struct nodo *crea_nodo(int);
void insertar(struct nodo *q,int x);

void main()
{

struct nodo *q,*L=NULL;
int z,x;

while(1)
{
printf("ingrese valor para lista\n");
scanf("%d",&z);
if(z==0)break;
if(L==NULL)
L=crea_nodo(z);
else{

q=L;
L=crea_nodo(z);
L->siguente=q;
}

}


q=L;

while(q != NULL)
{
printf("%d->",q->valor);
q=q->siguente;
}

getch();

printf("ingrse numero");
scanf("%d",&x);


void insertar(L, x);
}



struct nodo *crea_nodo(int z){


struct nodo *p;
p=malloc(sizeof(struct nodo));
p->valor=z;
p->siguente=NULL;

return p;}


void insertar(struct nodo *q,int x){

struct node *p=crea_nodo(x);
p->siguente=q;
q=p;}
  #2 (permalink)  
Antiguo 02/05/2008, 05:43
 
Fecha de Ingreso: febrero-2008
Mensajes: 3
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: problemas con funciones

Hola!!

En primer lugar la función para mostrar la lista la podrías hacer recursiva y muy sencillita:

void imprimir(struct nodo * l){
if (l==NULL)
printf("\n LISTA VACIA \n");
else{
printf("%d",l->valor);
imprimir(l->siguiente); /*Esto es lo más importante de esta función,se llama recursivamente al siguiente elemento de la lista*
}
}

P.D: Si cambias el orden del printf (ANTES O DESPUES de la llamada recursiva) se imprimirá en orden inverso o en orden correcto. PRUEBALO!!
  #3 (permalink)  
Antiguo 02/05/2008, 05:47
 
Fecha de Ingreso: febrero-2008
Mensajes: 3
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: problemas con funciones

Una cosa que veo que haces mal:

cuando pones p=malloc(sizeof(struct nodo));

la llamada malloc sirve para reservar memoria y se le dice el tamaño eso está bien, pero malloc te devuelve un puntero sin tipo (void) por lo que tienes que convertirlo con un cast.

p=(struct nodo *)malloc(sizeof(struct nodo));
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




La zona horaria es GMT -6. Ahora son las 20:36.