 
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
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
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.