Buenas.
Estoy tratando de resolver este ejercicio.
Nos dan la siguiente representación para una lista encabezada:
struct nodo {
int elem;
nodo *sig;
};
struct cabezal {
nodo *primero;
nodo *actual;
};
typedef cabezal *lista;
Y el ejercicio 6d pide:
insert: dados un entero x y una lista l, inserta el elemento x luego de la posición actual en la lista. La
posición actual pasa a ser el elemento (nodo) recién insertado. Si la lista l está vacía, el resultado es la
lista unitaria que contiene a x, siendo este elemento la posición actual en la lista resultado.
La duda que tengo es cuando por ejemplo la lista está vacía y necesito crear un nuevo nodo.
No se mucho sobre el lenguaje C, entonces no se me ocurre cómo resolverlo en código.
A lo que llegué fueron a estás dos variantes de código pero ninguna compila.
1)
void insert(int x, lista &l) {
if (l->primero == NULL) {
nodo nuevo = new nodo;
nuevo->elem = x;
nuevo->sig = NULL;
l->primero = nuevo;
l->actual = l->primero;
}
}
2)
void insert(int x, lista &l) {
if (l->primero == NULL) {
nodo nuevo;
nuevo.elem = x;
nuevo.sig = NULL;
l->primero = nuevo;
l->actual = l->primero;
}
}
No sé si hay algo que no estoy viendo o si es por no tener conocimiento de la programación en C.
Agradezco cualquier ayuda que me puedan brindar.
Saludos cordiales