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

    [c] domanda sullo stack

    ...

    Come si puo’rappresentare uno Stack utilizzando la memoria dinamica?
    Osservazione: lo Stacke’ una lista in cui inserisco e rimuovo elementi sempre e solo dalla testa
    Esercizio:
    se si volesse realizzare un programma con uno stack
    •che implementi uno stacktramite memoria dinamica
    •considerare lo stack come caso particolare del tipo di dato lista
    •sullo stacksia possibile inserire elementi dello stesso tipo
    •le operazioni di pushe pop sullo stackinseriscono valori di input dati dell’utente
    Variazione:
    DA DISCUTERE “come cambia la soluzione precedente se sullo stackfosse possibile inserire elementi di tipi diversi”
    ..non m'interessa particoalrmente la struttura del programma bensì le variazioni che avvengono quando io vado a inserire tipi diversi all'interno del mio stack..grazie in anticipo

  2. #2
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Basta che tieni un puntatore alla prima e all' ultima struttura allocata,come detto qua,nel mio post a fondo pagina.

  3. #3
    MA E' ABBASTANZA SCONTATO CHE SI ABBIANO DUE PUNTATORI NEL MOMENTO IN CUI CREI UNO STACK ...SIA CON TIPI UGUALI CHE CON TIPI DIVERSI..io vorrei sapere invece come strutturala in modo tale che i miei tipi siano diversi ovvero come se creassi "dinamicamente" anche i dati da inserire...

  4. #4
    EIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

  5. #5
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219

  6. #6
    ? ..

  7. #7
    Il metodo più semplice che mi viene in mente è usare il vecchio trucco della struttura con un campo che indichi il tipo trasportato e una union per poter memorizzare vari tipi di payload:
    codice:
    enum PayloadType
    {
        PT_short,
        PT_int,
        PT_float,
        PT_double,
        PT_char
        /* ... */
    };
    
    /* Struct usata per gli elementi della lista */
    struct Item
    {
        struct BaseItem * Next;
        struct BaseItem * Prev;
        enum PayloadType PT;
        union
        {
            short s;
            int i;
            float f;
            double d;
            char c;
            /* ... */
        } Payload;
    };
    Al momento di aggiungere un elemento alla lista sottostante, a seconda del tipo da inserire si imposterà in maniera adeguata il membro PT e si memorizzerà quindi il dato in questione nel membro corretto della union.

    Si può fare anche in altre maniere (ad esempio usando strutture diverse che hanno come primo campo la struttura base, un concetto simile all'ereditarietà del C++), ma diventa un po' un casino e in genere non ne vale la pena.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    Moderazione

    Originariamente inviato da assente1
    EIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
    Il forum non è un luogo in cui gli utenti svolgono i compiti a casa altrui.

    Invece di pubblicare queste esortazioni, in futuro proponi una tua soluzione affinché tutti possiamo valutarla e correggerla se necessario, senza demandare al forum la risoluzione dell'intero esercizio.

    Per questa e altre norme, si veda il Regolamento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.