[C++] Lista inserimento in testa

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Tino-Tom
Prode Principiante
Messaggi: 68
Iscrizione: venerdì 29 agosto 2014, 13:00
Distribuzione: Ubuntu 64bit

[C++] Lista inserimento in testa

Messaggio da Tino-Tom »

Ciao ragazzi, per piacere potreste aiutarmi con l'inserimento in testa della mia lista ? Non riesco proprio a capire come farlo. Vi scrivo di seguito il mio codice senza il "main".

Codice: Seleziona tutto

#include<iostream>
using namespace std;

class Info{

private:

	int valore;

public:

	Info();
	Info(int);
	int getValore();
	void setValore(int);
	void Stampa();


};

Info::Info(int val){

	this->valore=val;
}

void Info::setValore(int val){

	this->valore=val;
}

int Info::getValore(){

	return this->valore;
}

void Info::Stampa(){

	cout<<" Valore: "<<this->getValore()<<endl;
}

class Nodo{

public:

	Info *info;
	Nodo *next;
	Nodo(Info*);
	void Stampa();
};

Nodo::Nodo(Info *info){

	this->info=info;
	this->next=NULL;
}

void Nodo::Stampa(){

	this->info->Stampa();
}

class Lista{

public:

	Nodo *start;
	Lista();
	void Add_coda(int);
	void Add_testa(int);
	void Stampa();
	Nodo* Ricerca(int);
};

Nodo* Lista::Ricerca(int valore_cercato){

	Nodo *walker= this-> start;

	while(walker != NULL)
	{
		if(walker->info->getValore()==valore_cercato)
		{
			return walker;
		}
		walker=walker->next;
	}
	return NULL;

}

void Lista::Add_testa(int val){

	


}

void Lista::Add_coda(int val){

	Info *info= new Info(val);

	if(this->start == NULL)
	{
		start= new Nodo(info);
	}
	else
	{
		Nodo *walker= this->start;
		while(walker->next != NULL)
		{
			walker=walker->next;
		}
		walker->next=new Nodo(info);
	}
}

void Lista::Stampa(){

	Nodo *walker=this->start;

	while(walker != NULL)
	{
		walker->Stampa();
		walker=walker->next;
	}
}

Lista::Lista(){

	this->start=NULL;
}
Il metodo inserimento in testa è vuoto perché non riesco a capire come farlo.

Grazie mille in anticipo
cuccagna
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 423
Iscrizione: giovedì 26 marzo 2009, 15:50

Re: [C++] Lista inserimento in testa

Messaggio da cuccagna »

Ciao
Se hai fatto l'inserimento in coda quello in testa è ancora più semplice.
Salvi in un temporaneo(startPrecedente) ciò a cui punta start correntemente.
Poi crei dinamicamente il nodo e Info ecc. e lo fai puntare da start.
start->next lo fai poi puntare a startPrecedente
Tino-Tom
Prode Principiante
Messaggi: 68
Iscrizione: venerdì 29 agosto 2014, 13:00
Distribuzione: Ubuntu 64bit

Re: [C++] Lista inserimento in testa

Messaggio da Tino-Tom »

Potresti scrivermi solo questo piccolo codice ? Non l'ho capito molto bene :muro:
cuccagna
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 423
Iscrizione: giovedì 26 marzo 2009, 15:50

Re: [C++] Lista inserimento in testa

Messaggio da cuccagna »

Codice: Seleziona tutto

Nodo *startPrecedente=start;

Info *info= new Info(val);
start = new Nodo(info);
start->next = startPrecedente;
L'ho scritto velocemente e non l'ho testato. Usalo solo come riferimento per capire cosa fare.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti