Comprobando si una matriz de estructuras está vacía o no

¿Cómo hago esto? Por ejemplo

typedef struct node { int data; struct node* next; }node; 

Es mi nodo, y en mi principal tengo

  int main(){ node* array[10]; if (node[0].data == 0){ ... } 

No estoy realmente seguro de lo que necesito hacer aquí. Quiero poder verificar si estas entradas en la matriz ya se han modificado. ¿Cómo haría esto? He intentado el operador -> en lugar de. lo que me está causando confusión porque estoy trabajando con un objeto, ¿no es así? No estoy seguro de esto.

Siguiendo los consejos esto es lo que ahora tengo.

  int main() { struct node* arr[10] = { 0 } ; addTo(data, arr); } addTo(int data, node* arr){ if (arr[0] == NULL) } 

La última línea es una falla de segmentación.

Las matrices en C no pueden estar “vacías”. Nunca están vacíos. Si declara una matriz de 10 elementos, siempre tendrá una matriz de 10 elementos. No hay forma de decir si un elemento ha sido modificado o no, a menos que usted mismo encuentre alguna manera de “marcar” manualmente los elementos que modifica. Por ejemplo, puede elegir algún valor de elemento reservado, que designará un elemento “vacío”.

En tu caso declaras una matriz de 10 punteros.

 node* array[10]; 

Si suministras un inicializador

 node* array[10] = { 0 }; 

los elementos de su matriz tendrán el valor inicial de nulo. Puede usar ese valor como una marca de un elemento “vacío”.

  node array[10]; //array of struct node type //node *array[10]; //this becomes declaration of array of pointers //assuming you have initialized all with 0. for(i=0;i<10;i++) if (array[i].data == 0) //data modified. //if you declare array of pointers check if(array[i]->data==0) 

El código que publicaste no puede provocar un locking, porque ni siquiera se comstack. Arreglé todos los errores obvios para deshacerme de los compiler errors, y ahora funciona perfectamente aquí sin fallar:

 #include  #include  typedef struct node { int data; struct node* next; } node; /* changed node* to node*[] and added return type */ void addTo(int data, node* arr[]) { if (arr[0] == NULL) { puts("yes"); } else { puts("no"); } } int main() { struct node* arr[10] = { 0 } ; /* changed data to 42, because there is no variable data in scope here */ addTo(42, arr); } 

Si tiene más preguntas, no dude en preguntar.