1
I need to add integers in an orderly way, within a list implementation that I developed.
//Implementação dos nós para serem usados na lista
NodeList::NodeList(int dataa){
this->next = NULL;
this->data = dataa;
}
//Retorna o próximo vértice da lista
NodeList* NodeList::get_next(){
return next;
}
//Altera o próximo elemento da lista com o parâmetro
void NodeList::add(NodeList* data){
next = data;
}
//Lista de adjacência
//Implementação da estrutura de dados lista de adjacência
ListaAdjacencia::ListaAdjacencia(int node){
top = new NodeList(node);
last = top;
}
//Retorna true se encontrar o vertice do parametro na lista
bool ListaAdjacencia::search(int i){
NodeList* nodee = top;
while (nodee != NULL)
{
int c = nodee->get();
if (c == i)
{
return true;
}
nodee = nodee->get_next();
}
return false;
}
//Adiciona um vértice a lista de maneira não ordenada
bool ListaAdjacencia::add(int data){
cout<<"adicionando " <<data<< " a lista de maneira não ordenada\n"<<endl;
if(!search(data)){
NodeList* new_node = new NodeList(data);
if (top == NULL)
{
top = new_node;
last = new_node;
}else{
last->add(new_node);
this->last = new_node;
}
sizee +=1;
return true;
}
return false;
}
Next, my attempt to create the add method, so that the nodes are ordered.
bool ListaAdjacencia::addOrdenada(int data){
cout<<"adicionando " <<data<< " a lista ordenadamente\n"<<endl;
if(!search(data)){
if (top == NULL)
{
NodeList *new_node = new NodeList(data);
top = new_node;
last = new_node;
}else{
NodeList node = *top;
NodeList previu = *top;
if (top->get() > data)
{
NodeList *temp = top;
top = new NodeList(data);
top->add(temp);
sizee +=1;
}else if(last->get() < data){
NodeList NodeNew(data);
last->add(&NodeNew);
last = &NodeNew;
sizee +=1;
}else{
for (int i = 0; i < size(); i++)
{
if (node.get() > data)
{
NodeList NodeNew(data);
previu.add(&NodeNew);
NodeNew.add(&node); //possível problemas com ponteiros?
sizee +=1;
break;
}
previu = node;
node = *node.get_next();
}
}
}
return true;
}
return false;
}
But when I carry out these instructions:
ListaAdjacencia lista(5);
lista.addOrdenada(9);
lista.addOrdenada(4);
lista.addOrdenada(13);
lista.addOrdenada(11);
lista.addOrdenada(7);
lista.show();
The console prints:
Lista:
4
5
13
Please post a complete program that can be compiled.
– arfneto