PDA

View Full Version : [C++]Implementazioni strutture dati


InformaticoRC
13-09-2011, 18:35
modifica discussione VEDETE L'ULTIMO MIO POST

Salve a tutti :cool:

cerco qualsiasi esempio, guide, ecc di programmi in c++ che implementano ordinamenti e strutture dati quali liste (linkate e doppiamente linkate), alberi, pile, code e grafi.

Specifico che conosco bene a livello teorico queste strutture e tipi di dato e voglio imparare ora ad implementarle.

grazie in anticipoooo

Floris
15-09-2011, 07:46
Prova a guardare in Thinking in C++ volumi 1 e 2 liberamente reperibili al seguente indirizzo:
http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html
(ad es. volume 2 capitolo 7 - Generic containers).
Se vuoi la traduzione italiana:
http://sites.google.com/site/pensareinc/
Inoltre ti consiglio di consultare la documentazione della STL (Standard Template Library).

InformaticoRC
15-09-2011, 21:07
Grazie mille!!!

InformaticoRC
24-09-2011, 12:08
Ragazzi come implemento questi pseudocidici degli algoritmi di selectionSort, insetionSort e bubbleSort sul programma che ho postato? mettiamo che io voglia ordinare la lista. Mi serve vedere proprio l'implementazione dell'ordinamento aggiunta a questo programma.

pseudocodici:

SELECTION SORT(array A):
for k=0 to n-2 do
m <- k+1
for j=k+2 to n do
if(A[j]<A[m]) then m <- j
scambia A[m] con A[K+1]

INSERTION SORT(array A):
for k=1 to n-1 do
x<-A[k+1]
for j=1 to k+1 do
if(A[j]>x)then break
if(j<K+1)then
for t=k downto j do A[t+1] <- A[t]
A[j] <- x

BUBBLE SORT(array A):
for i=1 to (n-1)
for j=2 to (n-i+1)
if(A[j-1]>A[j])then scambia A[j-1] e A[j]
if(non ci sono stati scambi)then break

-----------------------------------------------------

PROGRAMMA LISTA LINKATA

#include <iostream>
using namespace std;

class lista
{
private:
int numero;
lista *successivo;
public:
lista();
void set(int num) {numero = num;};
int get() {return numero;};
void pointTo(lista *point) {successivo = point;};
lista *getnext(){return successivo;};

};

void inserisci(int num);
void visualizza();

lista *start;
lista *nuovo;
lista *ultimo;



lista::lista()
{
numero = 0;
successivo = NULL;
}



int main()
{
int scelta, num;
do
{
cout << "################## LISTA LINKATA ####################\n\n\n";
cout << "Inserisci il numero che corrisponde all'operazione che vuoi compiere: \n\n\n";
cout << "Se vuoi inserire un elemento premi 1\n\n";
cout << "Se vuoi visualizzare gli elementi inseriti premi 2\n\n";
cout << "Se vuoi uscire premi 3\n\n\n";
cout << "Digita la tua scelta-> ";
cin >> scelta;

switch(scelta)
{
case 1:
nuovo = new lista;
cout << "\n\nInserisci il numero-> ";
cin >> num;
inserisci(num);
system ("pause");
system ("cls");
break;

case 2:

visualizza();
system ("pause");
system ("cls");
break;


default:
cout << "\nINSERISCI UN VALORE CORRETTO\n\n";
break;
}
}while(scelta != 3);
return 0;
}


void inserisci (int num)
{
nuovo = new lista;
nuovo->set(num);
if (start == NULL)
start = nuovo;
else
ultimo->pointTo(nuovo);
ultimo = nuovo;
}

void visualizza ()
{
if (start== NULL)
cout << "\n\n\nNon ci sono elementi da visualizzare\n\n\n";
else
{
nuovo = start;
cout << "\n\nElementi inseriti:\n\n";
do
{
cout << "\n\n "<< nuovo->get( )<<"\n\n";
nuovo= nuovo->getnext( );
}while ( nuovo!= NULL);
};
}

grazieeeee