Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [C++] Union - Find ??

Visualizzazione discussione

  1. #1
    Utente di HTML.it L'avatar di Zeldic
    Registrato dal
    Jan 2010
    Messaggi
    80

    [C++] Union - Find ??

    Ciao!! E' da un po' di giorni che ho un problema con l'algoritmo Union - Find, non saprei proprio cosa fare. Ce n'è voluto molto per capire esattamente come funziona (con i due ordinamenti Quick - Union e Quick - Find..), ma ora ad implementarlo è tutta un'altra storia..

    Le slide dicono questo :

    Tipo di dato : Union Find
    Collezione di insiemi disgiunti identificati mediante una etichetta

    Operazioni : Makeset( Elemento a )
    Crea un insieme formato da un solo elemento, 'a', ed associa all’insieme
    l’etichetta 'a'


    Union( Insieme A, Insieme B )
    Unisce gli elementi degli insiemi A e B in un unico insieme che etichetta
    con 'A'. I vecchi insiemi A ed B saranno cancellati


    Find( Elemento a )
    Restituisce l’etichetta dell’insieme contenente l’elemento a.


    Io sono riuscito purtroppo a fare solo questo in codice, per ora :

    codice:
    #include <iostream>
    #include <stdlib.h>
    
    using namespace std;
    
    
    class Union {
      private : 
        struct Nodo {
          char name;
          char elem;
        };
        Nodo* A;                          
        //Nodo* B;    // Ho bisogno di dichiarare anche un altro nodo, 'B',  che è il fratello di 'A'??
    
      public :          
        Union() { A = NULL; }             
        ~Union() { delete A; }            
        void makeSet(Nodo*, char, char);  
        char unione(Nodo*, Nodo*);        
        char find(Nodo*);                 
        void print(Nodo*);
    };
    
    void Union::makeSet(Nodo* A, char n, char e) {     
      cout << "Inserisci il nome del nuovo insieme : ";
      cin >> n;
      cout << "Inserisci l'elemento (carattere) : ";
      cin >> e;
      
      A = new Nodo();   
      A->name = n;               
      A->elem = e;
    } 
    
    char Union::unione(Nodo* A) {
      // Non lo so!
    void Union::find(Nodo* etichetta) {
      // Nemmeno  :confused:
    Ciò che ho bisogno di fare l'ho disegnato nel file in allegato (spero si capisca, anche perché è banale).

    Sarei molto grato a chiunque mi darà anche un piccolo suggerimento su come andare avanti nelle funzioni 'unione()' e 'find()', e mi piacerebbe sapere da qualcuno esperto come voi se la classe è corretta, o meglio, ho bisogno di un solo puntatore alla struttura, o due? O sarebbe meglio non utilizzare proprio la struttura, ma semplicemente un campo per il nome del nodo ed uno per l'elemento??
    Immagini allegate Immagini allegate

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.