Buonasera a tutti, la creazione di un programma funzionante sulle liste concatenate mi sta creando numerosi problemi….
Vi posto il codice in C++ sperando che mi possiate aiutare
gli errori si trovano nella funzione add_nodo_posizione e delete_nodo_posizione
VI ringrazio.
Vi posto il codice in C++ sperando che mi possiate aiutare
gli errori si trovano nella funzione add_nodo_posizione e delete_nodo_posizione
VI ringrazio.
PHP:
---------------------------------------------classe Nodo-------------------------------------
class Nodo
{
private:
double dato;
Nodo* successivo;
public:
Nodo();
Nodo(double, Nodo*);
void set_successivo(Nodo*);
void set_nodo(Nodo*, double);
void set_dato(double);
double get_dato();
Nodo* get_successivo();
};
--------------------------------------------funzioni nodo-----------------
#include <stdio.h>
#include "Nodo.h"
Nodo::Nodo()
{
dato=0;
successivo=NULL;
}
Nodo::Nodo(double a, Nodo* b)
{
dato=a;
successivo=b;
}
void Nodo::set_dato(double info)
{
dato=info;
}
void Nodo::set_successivo(Nodo* pippo)
{
successivo=pippo;
}
double Nodo::get_dato()
{
return dato;
}
Nodo* Nodo::get_successivo()
{
return successivo;
}
void Nodo::set_nodo(Nodo* pippo, double info)
{
successivo=pippo;
dato=info;
}
------------classe lista--------------------------#include "Nodo.h"
class Lista
{
private:
Nodo* primo;
public:
Lista();
void add_nodo(double);
void print_lista(int);
void add_nodo_posizione(int ,double);
void delete_nodo_posizione(int);
};
-------------funzioni lista----------
#include "Lista.h"
#include <stdio.h>
#include <iostream>
using namespace std;
Lista::Lista()
{
primo= NULL;
}
void Lista::add_nodo(double info)
{
Nodo* temp;
if(primo==NULL)
{
primo = new Nodo;
primo->set_dato(info);
}
else
{
temp=primo;
while(temp->get_successivo()!=NULL)
{
temp=temp->get_successivo();
}
temp->set_nodo(new Nodo, info);
}
}
void Lista::print_lista(int contatore)
{
int i=0;
Nodo* temp;
temp=primo;
i++;
while(i<=contatore)
{
cout<<"\n"<<(temp->get_dato());
temp=(temp->get_successivo());
i++;
}
}
void Lista::add_nodo_posizione(int posizione, double info)
{
Nodo* temp;
Nodo* tempdue;
Nodo* temp3;
temp=primo;
int i=1;
do
{
temp=temp->get_successivo();
++i;
} while(i!=(posizione));
if(i==posizione)
{
tempdue= temp ;
temp->set_nodo(new Nodo, info);
temp3=temp->get_successivo();
temp3->set_successivo(tempdue);
}
}
void Lista::delete_nodo_posizione(int posizione)
{
int i=1;
Nodo* temp;
Nodo* temp2;
temp=primo;
do
{
temp=temp->get_successivo();
i++;
}while(i!=(posizione-1));
temp2=primo;
do
{
temp2=temp2->get_successivo();
i++;
}while(i!=(posizione+1));
temp->set_successivo(temp2);
}