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

    [C]spiegazione codice coda

    ragazzi non capisco questa porzione cdi codice.praticamente la funzione inserisce l'elemento val in coda alla coda.ma cosa vuol dire quel pezzo di codice???

    codice:
    int q_put(queue_t * q, long val){
         if (q->num < QUEUESIZE) {//se la coda non è piena inserisci
         q->data[q->tail] = val; 
         q->tail = (q->tail + 1) % QUEUESIZE; <------//COSA VUOL DIRE?
         q->num++;
         return 0;
         }
         return 1;
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    E' un modo per utilizzare la coda (implementata con un array) in maniera circolare. Se il puntatore alla coda è arrivato in fondo (cioè a QUEUESIZE - 1), quando viene incrementato torna a 0 (% QUEUESIZE fa sì che il valore di q->tail sia al massimo QUEUESIZE-1, vedi cosa fa l'operatore modulo se non lo conosci). Si tratta solo di uno stratagemma per evitare che l'inserimento in coda finisca nel momento in cui si raggiunge il size dell'array anche se nel frattempo alcuni elementi sono stati eliminati dalla coda stessa (come garantito dalla condizione q->num < QUEUESIZE). Ovviamente si tratta di un "trick" necessario solo quando implementi la coda con un array: se utilizzi una lista linkata infatti puoi fare inserimenti in coda teoricamente all'infinito semplicemente aggiornando i puntatori.
    every day above ground is a good one

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

    Moderazione

    Il linguaggio va indicato anche nel titolo, come da Regolamento.

    Tienilo a mente per il futuro.
    Qui l'ho aggiunto io.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  4. #4
    ops l'avevo dimenticato.scusa.ma comunque non è C++ è semplicemente C

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.