Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892

    [C] Aggiungere in coda un elemento

    Buonasera a tutti, smanettatori e smanettatrici dei vari linguaggi di programmazione!
    Sono di nuovo qua per rompere le scatole e.. porvi una nuova domanda!
    Ed eccola: io devo mettere in coda un elemento ad una lista (di strutture), posso farlo semplicemente scorrendo la lista fichè punta a NULL e poi inserire la struttura oppure cè qualche metodo più efficente???

    Perdonate la pignoleria!!!!

    Ciauz e thx!!!
    Debian Sarge 3.01a
    Slackware 10.2

  2. #2
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345

    Re: [C] Aggiungere in coda un elemento

    Originariamente inviato da Fabiuz
    Buonasera a tutti, smanettatori e smanettatrici dei vari linguaggi di programmazione!
    Sono di nuovo qua per rompere le scatole e.. porvi una nuova domanda!
    Ed eccola: io devo mettere in coda un elemento ad una lista (di strutture), posso farlo semplicemente scorrendo la lista fichè punta a NULL e poi inserire la struttura oppure cè qualche metodo più efficente???

    Perdonate la pignoleria!!!!

    Ciauz e thx!!!
    Ciao, suppongo tu abbia scaricato le esercitazioni da UniVe. Ti comunico intanto che c'è un'imprecisione: la funzione MettiInCoda, proprio per come è strutturata, funziona solo con liste non nulle Quindi crea il primo elemento all'esterno della procedura e poi lavoraci sopra tranquillamente.

    L'unico modo per aggiungere in coda è scorrere tutta la lista, purtroppo!
    Esempio (addirittura il tuo caso specifico ):
    codice:
    void MettiInCoda (Sportello s, Prenotazione p) {
            Sportello aux = s;
            Sportello nuovo;
            nuovo = malloc (sizeof (Elem_Sportello));
            nuovo->prenotazione = p;
            while (aux->next != NULL)
                    aux = aux->next;
            aux->next = nuovo;
            nuovo->next = NULL;
    }

  3. #3
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    Eh si, scaricate proprio 15 min fa!!
    Cmq senza sporcare i thread.. il più curioso esercizio è il n°2
    Praticamente il succo è: cancella il primo elemento della lista !!! Ma come faccio a verificare se non ci sono + posti nella sala? Devo dire alla f.ne quale sala è ??? Boh!
    Debian Sarge 3.01a
    Slackware 10.2

  4. #4
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345
    Originariamente inviato da Fabiuz
    Eh si, scaricate proprio 15 min fa!!
    Cmq senza sporcare i thread.. il più curioso esercizio è il n°2
    Praticamente il succo è: cancella il primo elemento della lista !!! Ma come faccio a verificare se non ci sono + posti nella sala? Devo dire alla f.ne quale sala è ??? Boh!
    L'esercizio 2 chiede banalmente di rimuovere il primo elemento della lista e di aggiornare lo stato del cinema in modo opportuno. Non comporta alcun tipo di difficoltà aggiuntiva: aumenti di 1 le prenotazioni in una delle sale solo se non vi sono già un numero di prenotazioni uguali alla capienza. La sala è contenuta all'interno delle prenotazioni dello sportello stesso.

  5. #5
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    Ma il fatto è che non so come collegare Sala, CAPIENZA e prenotazioni!!!! E così mi succede anche con l'Esercitazione precedente! Puoi farmi un esempio di codice???
    Debian Sarge 3.01a
    Slackware 10.2

  6. #6
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    ti prego !!!! Altrimenti non posso fare più niente !!!



    Aiutatemi....fatemi vedere la luce !!! Sn in un mare di oscurità (oltre che di disperazione)!!!!

    I need your help.....Thanks
    Debian Sarge 3.01a
    Slackware 10.2

  7. #7
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    se magari rendete partecipi anche noi
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  8. #8
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    Allora io ho questa cosa:
    typedef enum Sala { A, B, C, D } Sala;
    const intCAPIENZA [ ] = { 50, 70, 100, 30 };
    int prenotazioni [ ] = { 0, 0, 0, 0 };
    typedef struct{
    Sala sala;char*CF;}Prenotazione;
    typedef struct Elem_Sportello {
    Prenotazione prenotazione;
    struct Elem_Sportello *next; } Elem_Sportello;
    typedef Elem_Sportello *Sportello;

    Io devo fare questa f.ne:
    int EvadiPrenotazione(Sportello *ptr_s );
    che accetta la prima prenotazione contenuta nella lista puntata da ptr_s e la toglie dalla lista. La f.ne restituisce 0 se questo non risulta possibile in quanto non sono più disponibili posti in quella sala, altrimenti restituisce 1 e aggiorna la disponibilità dei posti nella sala prescelta.
    Solo che non so come fare!!!
    Debian Sarge 3.01a
    Slackware 10.2

  9. #9
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    e questo è il testo intero dell 'esercizio:

    Un valore di tipo Prenotazioneè un record di due campi. Il primo campo rappresenta la sala in cui viene proiettato il film che si intende vedere (A, B, C o D); il secondo campo CF, di tipo char *, serve a contenere il codice fiscale del richiedente. In ogni sala sono disponibili solo un numero fissato di posti, determinato dall’array costante CAPIENZA, ed il numero di prenotazioni accettate per quella sala è memorizzato nella variabile globale prenotazioni.Un potenziale spettatore entra nella biglietteria del Cinema Multisala, compila la sua prenotazione e si mette in fila ad uno sportello ad aspettare il suo turno. Di fronte ad ogni sportello della biglietteria, cisarà dunque una lista di prenotazioni che aspettano di essere evase: un valore di tipo Sportello è una lista semplice di prenotazioni in attesa.

    Così riesco a spiegarmi meglio!!
    Debian Sarge 3.01a
    Slackware 10.2

  10. #10
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345
    codice:
    int EvadiPrenotazione (Sportello* ptr_s) {
            int num_sala;
            Sportello temp;
            if (*ptr_s == NULL)
                    return 0;
            else {
                    num_sala = ((*ptr_s)->prenotazione).sala;
                    if (prenotazioni[num_sala] < CAPIENZA[num_sala]) {
                            prenotazioni[num_sala]++;
                            temp = *ptr_s;
                            (*ptr_s) = (*ptr_s)->next;
                            free (temp);
                            return 1;
                    }
                    else
                            return 0;
            }
    }

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.