Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di hopeway
    Registrato dal
    Sep 2017
    residenza
    Catania
    Messaggi
    47

    [C++] Dubbi su implementazione di un heap

    Salve, sto implementando come esercizio un heap. Nell'istruzione left, right e parent il prof scrive:
    codice:
    intleft(int i) { return i<<1; }        
    int right(int i) { return (i<<1)|1; }
    int parent(int i) { return i>>1; }

    Qualcuno potrebbe spiegarmi le varie istruzioni?

  2. #2
    In left(...) fa lo shift a sinistra di un bit dell'intero in ingresso, che equivale a moltiplicare per 2 il valore in ingresso
    (es: 42<<1: 101010 -> 1010100 = 84 in base 10)
    In right(...) fa lo shift a sinistra di un bit dell'intero in ingresso e pone la cifra meno significativa a 1, che equivale a moltiplicare per 2 il valore in ingresso e ad aggiungere 1
    (es: (42<<1)|1: (101010<<1)|0000001 = 1010100|0000001 = 1010101 = 85 in base 10)
    In parent(...) fa lo shift a destra di un bit dell'intero in ingresso, che equivale a dividere per 2 il valore in ingresso, scartando il resto
    (es: 42>>1: 101010 -> 10101 = 21 in base 10)

    In uno heap implementato con un array, se si parte a contare da 1, è il modo per recuperare l'indice dei figli (sx e dx) e del padre di un nodo

  3. #3
    Utente di HTML.it L'avatar di hopeway
    Registrato dal
    Sep 2017
    residenza
    Catania
    Messaggi
    47
    Perfetto, grazie mille!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.