introduzione
Una coda è una raccolta di elementi, in cui il primo elemento aggiunto all'elenco deve essere il primo elemento da rimuovere successivamente. Quindi, man mano che gli articoli vengono aggiunti alla collezione, sta crescendo di dimensioni, i.e. sta crescendo in lunghezza. Ogni volta che un elemento deve essere rimosso, deve essere il primo aggiunto. Se gli elementi vengono rimossi continuamente, il successivo rimosso è il secondo elemento; il terzo viene rimosso in seguito, e così via.
Dopo che il primo elemento dell'elenco originale è stato rimosso, il secondo diventa il primo elemento. Dopo che il secondo elemento è stato rimosso, il terzo diventa il primo elemento e così via.
Un buon esempio di coda nella vita reale è quando le persone si mettono in fila per aspettare il servizio o il bene. La prima persona viene servita prima dell'ultima. Tuttavia, la coda di cui si parla in questo tutorial è la coda del software, come progettata in C++.
FIFO
FIFO sta per First-In, First-Out. È un altro modo per apprezzare la coda. Ciò significa che il primo elemento ad entrare nell'elenco, è il primo elemento ad essere rimosso, ogni volta che deve avvenire la rimozione. L'inizio dell'elenco è chiamato head o front; la fine della lista si chiama dietro o coda.
Operazioni essenziali
Una coda software deve avere almeno le seguenti operazioni:
Spingere
Questa operazione aggiunge un nuovo elemento in fondo alla coda. Questa operazione è ufficialmente chiamata, enqueue.
cambio
Questa operazione rimuove il primo elemento della coda e il secondo elemento diventa il nuovo primo elemento. Questa operazione è ufficialmente chiamata dequeue. Si chiama pop in Do++.
Questo articolo spiega come utilizzare la struttura dei dati della coda C++. Dovresti conoscere i puntatori e i riferimenti C++ per comprendere il resto di questo articolo.
Classe e oggetti
Una classe è un insieme di variabili e funzioni che lavorano insieme, in cui le variabili non hanno valori assegnati a. Quando i valori sono assegnati alle variabili, la classe diventa un oggetto. Valori diversi dati alla stessa classe danno come risultato oggetti diversi; cioè, oggetti diversi sono la stessa classe con valori diversi. Si dice che creare un oggetto da una classe sia creare un'istanza dell'oggetto.
Il nome, coda, è una classe. Un oggetto creato dalla classe della coda ha un nome scelto dal programmatore.
È necessaria una funzione che appartiene a una classe per istanziare un oggetto dalla classe. In C++, quella funzione ha lo stesso nome del nome della classe. Gli oggetti creati (istanziati) dalla classe hanno nomi diversi dati loro, dal programmatore.
Creare un oggetto dalla classe significa costruire l'oggetto; significa anche istanziare.
Un programma C++ che utilizza la classe queue, inizia con le seguenti righe all'inizio del file:
#includere#includere
usando lo spazio dei nomi std;
La prima riga è per input/output. La seconda riga è quella di consentire al programma di utilizzare tutte le funzionalità della classe coda. La terza riga consente al programma di utilizzare i nomi nello spazio dei nomi standard.
Sovraccarico di una funzione
Quando due o più firme di funzioni diverse hanno lo stesso nome, si dice che quel nome è sovraccarico. Quando viene chiamata una funzione, il numero e il tipo di argomenti determinano quale funzione viene effettivamente eseguita.
Costruzione
codaLa seguente dichiarazione istanzia una coda denominata, que di tipo int.
codaLa coda è vuota. La dichiarazione inizia con la parola riservata, coda seguita da parentesi angolari con il tipo di dati. Quindi hai il nome dato al programmatore per la coda.
Costruire con l'elenco degli inizializzatori
La seguente definizione mostra come creare una coda con l'elenco degli inizializzatori:
codaDistruggere una coda
Per distruggere una coda, lasciala uscire dal campo di applicazione.
Accesso agli elementi della coda
premere (valore)
Una coda è una lista First-In-First-Out. Quindi, ogni valore viene aggiunto dal retro. Il seguente segmento di codice crea una coda vuota, dopo di che vengono aggiunti cinque valori float dal retro:
codaque.premere (1.1);
que.premere (2.2);
que.premere (3.3);
que.premere (4.4);
que.premere (5.5);
dimensione() const
Questo restituisce il numero di elementi nella coda. Il codice seguente illustra:
codaque.premere (1.1); que.premere (2.2); que.premere (3.3); que.premere (4.4); que.premere (5.5);
cout << que.size() << '\n';
L'uscita è 5.
davanti()
Questo restituisce un riferimento al primo elemento della coda, senza rimuovere l'elemento. L'output del seguente codice è 1.1.
codaque.premere (1.1); que.premere (2.2); que.premere (3.3); que.premere (4.4); que.premere (5.5);
cout << que.front() << '\n';
L'elemento non viene rimosso dalla coda.
front() const
Quando la costruzione della coda è preceduta da const, viene eseguita l'espressione “front() const” invece di “front()”. Viene utilizzato nel codice seguente, ad esempio.
const codacout << que.front() << '\n';
Viene restituito un riferimento costante. L'elemento non viene rimosso dal vettore. Gli elementi della coda non possono essere modificati.
indietro()
Questo restituisce un riferimento all'ultimo elemento della coda, senza rimuovere l'elemento. L'output del seguente codice è 5.5.
codaque.premere (1.1); que.premere (2.2); que.premere (3.3); que.premere (4.4); que.premere (5.5);
cout << que.back() << '\n';
indietro() const
Quando la costruzione della coda è preceduta da const, viene eseguita l'espressione “back() const” invece di “back()”. Viene utilizzato nel codice seguente, ad esempio.
const codacout << que.back() << '\n';
Viene restituito un riferimento costante. L'elemento non viene rimosso dalla coda. Con il const precedente per la costruzione della coda, gli elementi nella coda non possono essere modificati.
Capacità della coda
dimensione() const
- vedi sopra
vuoto() const
Questo restituisce 1 per vero se non ci sono elementi nella coda o 0 per falso se la coda è vuota. Il codice seguente lo illustra:
codacout << que1.empty() << '\n';
coda
cout << que2.empty() << '\n';
L'uscita è:
01
Modificatori di coda
pop()
Una coda è FIFO, quindi qualsiasi elemento che deve essere rimosso deve essere rimosso dalla parte superiore (testa) della coda. Questa funzione membro rimuove il primo elemento senza restituirlo. Il codice seguente lo illustra:
codacout << que.front() << '\n';
que.pop();
cout << que.size() << '\n';
L'uscita è:
1.14
un.scambiare (b)
È possibile scambiare due code, come illustrato in questo segmento di codice:
codacoda
que1.scambiare(que2);
cout << "First element and size of que1:
"<< que1.front() <<", "<< que1.size() << '\n';
cout << "First element and size of que2 "<<
que2.davanti() <<", "<< que2.size() << '\n';
L'uscita è:
Primo elemento e dimensione di que1: 10, 2
Primo elemento e dimensione di que2: 1.1, 5
Nota che la lunghezza di una coda viene aumentata se necessario. Inoltre, i valori che non hanno avuto sostituzioni, vengono sostituiti da un valore predefinito. I tipi di dati devono essere dello stesso tipo.
Operatori di uguaglianza e relazionali per le code
Per i caratteri ordinari in C++, in ordine crescente, i numeri vengono prima delle lettere maiuscole, che vengono prima delle lettere minuscole. Il carattere spazio viene prima dello zero e tutti loro.
Operatori di uguaglianza
Restituisce 1 per vero e 0 per falso.
L'operatore ==
Restituisce 1 se le due code hanno la stessa dimensione e gli elementi corrispondenti sono uguali; altrimenti restituisce 0. Esempio:
codacoda
int numero = que1 == que2;
cout << num << '\n';
L'uscita è: 0.
Il != Operatore
- contrario di quanto sopra. Esempio:
codacoda
int num = que1 != que2;
cout << num << '\n';
L'uscita è: 1.
Operatori Relazionali
Restituisce 1 per vero e 0 per falso.
Il < Operator
Restituisce 1 se la prima coda è il sottoinsieme iniziale della seconda coda, con gli elementi delle due porzioni uguali uguali e nello stesso ordine. Se entrambe le code sono della stessa dimensione o di dimensioni diverse e spostandosi da sinistra a destra, viene rilevato un elemento nella prima coda che è inferiore all'elemento corrispondente nella seconda coda, verrà comunque restituito 1. Altrimenti viene restituito 0. Esempio:
codacoda
int num = que1 < que2;
cout << num << '\n';
L'uscita è 1. < does not include the case when the size and order are the same.
Il > Operatore
- contrario di quanto sopra. Esempio:
codacoda
int numero = que1 > que2;
cout << num << '\n';
Uscita: 0
Il <= Operator
- uguale a < but includes the case when the size and order are the same. Example:
codacoda
int num = que1 <= que2;
cout << num << '\n';
Uscita: 1
L'operatore >=
- contrario di quanto sopra. Esempio:
codacoda
int numero = que1 >= que2;
cout << num << '\n';
Uscita: 0
Classe e i suoi oggetti istanziati
Un valore sta a un tipo di dati, come un oggetto istanziato sta a una classe. La costruzione della coda può anche accettare una classe come tipo di dati. Il seguente programma lo illustra:
#includere#includere
usando lo spazio dei nomi std;
classe TheCla
pubblico:
numero int;
carattere statico;
void func (char cha, const char *str)
cout << "There are " << num << " books worth " << cha << str << " in the store." << '\n';
divertimento vuoto statico (char ch)
se (ch == 'a')
cout << "Official static member function" << '\n';
;
intero principale()
TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
coda
que.push(obj1); que.push(obj2); que.push(obj3); que.push(obj4); que.push(obj5);
cout << que.size() << '\n';
restituisce 0;
L'uscita è 5.
Lista collegata
L'elenco delle code è tecnicamente chiamato elenco collegato. Ci sono due tipi di liste collegate per la coda: lista concatenata singola e lista concatenata doppia.
Un elemento di lista con link singolo può essere implementato da una struttura di due membri. Un membro contiene un puntatore all'elemento successivo e l'altro membro contiene il datum (singolare per i dati).
Un elemento di lista doppiamente collegato può essere implementato da una struttura di tre membri. Il membro centrale contiene il datum, mentre il primo e il terzo membro tengono i puntatori ai loro elementi adiacenti.
Applicazioni della coda
La coda è una struttura dati first-in-first-out. Ci sono situazioni nell'informatica in cui i dati arrivano sotto forma di coda, che richiedono un comportamento first-in-first-out.
Condivisione delle risorse del computer
Una risorsa in un computer è qualsiasi componente fisico o virtuale di disponibilità limitata. Includono la CPU, la scheda video, il disco rigido e la memoria. La condivisione di una tale risorsa richiede una coda.
Gestione delle interruzioni
Le periferiche del computer devono interrompere di tanto in tanto il computer. Le interruzioni devono essere gestite nello stesso modo in cui sono arrivate. Questo ha bisogno di una coda.
Gestire le informazioni.
La coda può essere utilizzata, ad esempio, per gestire i file dell'applicazione per un lavoro, se i file sono memorizzati nel computer.
Conclusione
Una coda è una struttura di dati di lista, che può essere una lista con un collegamento singolo o una lista con un doppio collegamento. Di norma, il primo elemento che entra nell'elenco è il primo elemento che esce. C++ fornisce una struttura di dati di coda nella sua libreria standard. Le categorie di funzioni membro e operatori disponibili per questa struttura sono la costruzione della coda, l'accesso agli elementi della coda, la capacità della coda, i modificatori della coda e gli operatori di sovraccarico della coda.
Qualsiasi struttura di dati della coda deve fornire almeno le funzioni membro push() e pop(). push() significa inviare un nuovo elemento in fondo alla coda; e pop() significa, rimuovere l'elemento che si trova in cima alla coda. Sfortunatamente, in C++, queste funzioni non restituiscono il valore inserito o estratto. Quindi, per conoscere l'ultimo elemento prima di spingere, deve essere usata la funzione extra back(); e per conoscere il primo elemento prima del pop, deve essere usata la funzione extra front().
Un valore sta a un tipo di dati, come un oggetto istanziato sta a una classe. Quindi, una classe particolare può essere utilizzata come tipo di dati per l'istanza del modello di coda. Oggetti diversi per la classe diventano come valori diversi per la classe.
La coda ha applicazioni sul computer. Può essere utilizzato, ad esempio, per gestire i file dell'applicazione per un lavoro, se i file sono memorizzati nel computer.
cris