resueltos operaciones listas insertar fuente enlazadas elementos ejercicios ejemplos doblemente dinamicas con codigo c linked-list

operaciones - listas enlazadas en java



Problema al vincular un nuevo nodo a listas vinculadas en c (1)

Soy nuevo en C y también nuevo en la programación, y acabo de empezar a buscar listas enlazadas.

static struct post { char * str; struct post * next; } head = {0, NULL}; int stringdb_add(const char * str) { int pos = 0; struct post * new_input = (struct post * ) malloc(sizeof(struct post)); new_input - > str = (char * ) malloc(strlen(str) + 1); if (head.next == NULL) { strcpy(new_input - > str, str); new_input - > next = NULL; head.next = new_input; } else { while (head.next - > next) { ++pos; head.next = head.next - > next; } strcpy(new_input - > str, str); new_input - > next = NULL; head.next - > next = new_input; } return pos; }

Se supone que la función "stringdb_add" devuelve la posición en la que se ha colocado el nuevo nodo, pero cuando pruebo la función solo obtengo (00111111 ....).

Esto es probablemente porque la lista nunca se vincula correctamente.


while (head.next->next) { ++pos; head.next = head.next->next; }

Estás cambiando de forma permanente head.next que seguramente no es lo que quieres. Probablemente quieras algo como:

struct post *p = &head; while (p->next->next) /* ... */

Nitpick: strcpy(new_input->str, str) puede estar en un solo lugar, antes del if .