C/Visual C - Ayuda con miniprograma en C

 
Vista:
Imágen de perfil de Richard Dant
Val: 13
Ha disminuido 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Ayuda con miniprograma en C

Publicado por Richard Dant (3 intervenciones) el 29/01/2021 20:17:28
Tengo problemas con este pequeño codigo, pero nose si yo estoy ciego o que pasa estoy aprendiendo c abajo le puse su tester
creo que los punteros estan apuntando donde no deben . Mi error es falla de segmentacion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
#include "node.h"
int ll_equal(const node* a, const node* b) {
  while (a != NULL) {
    if (a->val != b->val)
      return 0;
    a = a->next;
    b = b->next;
  }
  return a == b;
}
#ifndef TEST
int main(int argc, char** argv) {
  int i;
  node nodes[10];
 
  for (i=0; i<10; i++) {
    nodes[i].val = 0;
    nodes[i].next = NULL;
  }
 
  nodes[0].next = &nodes[1];
  nodes[1].next = &nodes[2];
  nodes[2].next = &nodes[3];
 
  printf("equal test 1 result = %d\n", ll_equal(&nodes[0], &nodes[0]));
  printf("equal test 2 result = %d\n", ll_equal(&nodes[0], &nodes[2]));
 
  return 0;
}
#endif
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
Imágen de perfil de Rodrigo
Val: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Ayuda con miniprograma en C

Publicado por Rodrigo (119 intervenciones) el 30/01/2021 12:04:52
El ciclo while esta controlado solo por el valor de a, en el if al interior del while usas b->val, p ero es posible que b este apuntando a null, pues has hecho moverse tanto a "a" como a "b" en paralelo al final de ese ciclo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Richard
Val: 13
Ha disminuido 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Ayuda con miniprograma en C

Publicado por Richard (3 intervenciones) el 01/02/2021 16:37:47
Gracias por estar al pendiente de mis preguntas Agradezco mucho tu ayuda Rodrigo
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
Imágen de perfil de Lui Lionel
Val: 9
Ha aumentado su posición en 6 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Ayuda con miniprograma en C

Publicado por Lui Lionel (1 intervención) el 30/01/2021 12:58:19
Verfica los valores de nodo en while prueba con:
1
while (a ->next  !=  NULL) 
Los apuntadores siempre te devuelve algo, exepto que lo hayas iniciializado.
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

Ayuda con miniprograma en C

Publicado por Tom (619 intervenciones) el 03/02/2021 10:00:51
Hay bastantes errores de lógica para tan poco código :D

En principio el bucle de comparación debería ser:
while((a != NULL) && (b != NULL))

Pero incluso eso será inútil porque tu lista de nodos no termina con un nodo NULL por dos razones:
1.- Inicializas sus 10 elementos.
2.- No estás usando una lista de punteros a estructuras, sino una lista de estructuras (nodes[xx] nunca contendrá NULL, en todo caso contendrá {0, NULL}).

Quizás podrías arreglar algo haciendo:
while((a->next != NULL) && (b->next != NULL))
en ll_equal()

En definitiva, piénsate un poco más lo que quieres hacer y busca otro ejemplo que copiar.
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