C/Visual C - Problema con punteros en c

 
Vista:

Problema con punteros en c

Publicado por pepe (4 intervenciones) el 26/04/2007 12:43:36
Hola: Tengo un problema en la siguiente función que he realizado y no sé porqué. A ver si me pueden ayudar:

El objetivo de esta función es el siguiente:

Tengo que generar una lista con varios nodos, y cada nodo tiene varios campos. Uno de los campos es generado aleatoriamente, y, tengo que comprobar si ya ha sido introducido en la lista, y si es así, volver al inicio de la lista, generar otro campo aleatoriamente, y buscar si está repetido, y así hasta que no se repita.

El problema radica en que no se actualiza la lista, y no sé la razón:

void lista_palabras (ptrNodoLista *ptrS, int n, int k){

int i;
char *valor;
ptrNodoLista ptrNuevo;
ptrNodoLista ptrActual;
ptrNodoLista ptrAnterior;
ptrAnterior = NULL;
ptrActual = *ptrS;

valor = (char*)malloc(n*sizeof(char));
for (i=0; i<(pow(2,k));i++){
ptrNuevo = malloc(sizeof(NodoLista));
genera_palabra_codigo(n,k,valor);
printf("El valor de la valor es %s\n",valor);

while(ptrActual != NULL){
if (memcmp(valor,ptrActual->simbolo_n,n) == 0){
genera_palabra_codigo(n,k,valor);
ptrActual = *ptrS;
}
if(memcmp(valor,ptrActual->simbolo_n,n) != 0){
ptrActual = ptrActual->ptrSiguiente;
}
}

if (( ptrNuevo != NULL )) { /* es espacio disponible */
ptrNuevo->simbolo_n = (char*)malloc(n*sizeof(char));
ptrNuevo->simbolo_k = (char*)malloc(k*sizeof(char));
decimal_binario(ptrNuevo->simbolo_k,i,k);
memcpy(valor,ptrNuevo->simbolo_n,n);
ptrNuevo->ptrSiguiente = NULL;

while (ptrActual !=NULL && memcmp(valor,ptrActual->simbolo_n,n) > 0){
ptrAnterior = ptrActual;
ptrActual = ptrActual->ptrSiguiente;
}

if (ptrAnterior == NULL){
ptrNuevo->ptrSiguiente = *ptrS;
*ptrS = ptrNuevo;
}
else{
ptrAnterior->ptrSiguiente = ptrNuevo;
ptrNuevo->ptrSiguiente = ptrActual;
}
}

else {
printf("No se inserto la cadena. No hay memoria disponible.\n");
}
ptrActual=*ptrS;
}
}

Gracias por adelantado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con punteros en c

Publicado por Nelek (816 intervenciones) el 04/05/2007 13:00:23
Hola

has comprobado con el debugger en modo paso a paso? Lo mas seguro sea un "if" que no se contempla o un bucle del que no sales cuando toque...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar