Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C]Creare alberi e comparare stringhe per andare a sinistra o destra

    Salve ragazzi, avrei bisogno di un chiarimento.
    Quando si crea un albero binario per inserire i numeri, per scegliere i rami si comparano i numeri vedendo qual'è maggiore o minore in modo da scegliere la parte sinistra o destra.

    Ma con le stringhe? Come faccio a capire se la stringa è più grande o più piccola in modo da andare a sinistra o a destra?

    Scrivetemi un pezzetto di codice per capire gentilmente e grazie in anticipo!

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    214
    Si tratta solo della lunghezza della stringa? Se è così basta confrontare con strlen le due stringhe, e muoverti in base al valore che ottieni.
    Lo pseudocode sarà così:


    //arrivo ad analizzare il nodo u
    if( strlen(u.sx) < strlen(u.dx) )
    vai a sinistra;
    else
    vai a destra;

  3. #3
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    La risposta dipende in base a come tu decidi arbitrariamente di confrontare due stringhe. Ipoteticamente potresti avere la funzione che gestisce l'inserimento nell'albero binario tale che riceva, tra i parametri, un puntatore a funzione in modo tale che la stessa routine che si occupa dell'inserimento possa adattarsi a diversi tipi di input.

    Gli passeresti quindi due interi ed una funzione adatta a confrontare interi; gli passeresti due stringhe ed una funzione adatta a confrontarle (o piu di una funzione se posson esser confrontate in piu modi); ...

    Se ti interessa la lunghezza usa size_t strlen(const char *s);.
    Se ti interessa l'ordine alfabetico usa int strcmp(const char *s1, const char *s2);
    Se nessuna delle funzioni forniteti dallo standard va bene, implementa tu la tua funzione di confronto...
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

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.