0
Ayuda ÂżComo puedo arreglar este codigo para que funcione?
Tengo que realizar un semaforo, con una lista circular simplemente enlazada. Cuando le envio el color, me imprime un caracter sin sentido, y si lo trabajo como cadena, en pantalla me imprime "media tek" o algo parecido. https://code.sololearn.com/cBbwL6MBn3vl/?ref=app
1 Answer
+ 3
Ademås, debe implementar una función para eliminar nodos, de lo contrario tiene una pérdida de memoria.
#include <iostream>
using namespace std;
struct nodo
{
char *color; // <--
nodo *sig;
nodo()
{
color = NULL; // <--
sig = NULL;
}
nodo(char *x) // <--
{
color = x;
sig = NULL;
}
};
class semaforo
{
private:
nodo *inicio;
public:
void insertar();
void imprimir();
semaforo()
{
inicio = NULL;
}
};
void semaforo::insertar()
{
char *v = "verde"; // <--
if (inicio == NULL)
{
inicio = new nodo(v);
inicio->sig = inicio;
}
}
void semaforo::imprimir()
{
nodo *aux = inicio;
do
{
cout << aux->color << endl;
aux = aux->sig;
} while (aux != inicio);
}
int main()
{
semaforo a;
a.insertar();
a.imprimir();
return 0;
}
~~~~~~~
Output:
verde