Casa Finanza personale Come creare un elenco collegato in Programmazione C - manichini

Come creare un elenco collegato in Programmazione C - manichini

Video: C - 34 - Liste (Parte 1) 2025

Video: C - 34 - Liste (Parte 1) 2025
Anonim

Nella programmazione C, se si desidera aggiungere una seconda struttura al codice che è già stata creata, creare un elenco collegato: una serie di strutture che contengono puntatori tra loro. Insieme ai dati di base in una struttura, la struttura contiene un puntatore, che contiene l'indirizzo della struttura successiva nell'elenco.

Con una sapiente giocoleria dei nomi dei puntatori, più un NULL per chiudere la fine della lista, si potrebbe finire con qualcosa di simile al codice sorgente in A Primitive Linked-List Example.

UN ESEMPIO DI ELENCO CON LISTA PRINCIPALE

#include #include #include int main () {struct stock {char symbol [5]; quantità int; prezzo fluttuante; struct stock * next;}; struct stock * prima; struct stock * current; struct stock * new; / * Crea una struttura in memoria * / first = (struct stock *) malloc (sizeof (struct stock)); if (first == NULL) {puts ("Qualche tipo di errore malloc ()"); exit (1);} / * Assegna i dati della struttura * / current = first; strcpy (current-> symbol, "GOOG"); current-> quantità = 100; current-> Prezzo = 801. 19; current-> next = NULL; nuovo = (struct stock *) malloc (sizeof (struct stock)); if (new == NULL) {puts ("Un altro errore malloc ()"); exit (1);} current-> next = new; corrente = new; strcpy (current-> symbol, "MSFT"); current-> quantità = 100; current-> Prezzo = 28. 77; current-> next = NULL; / * Visualizza database * / puts ("Portafoglio di investimento"); printf ("SymboltSharestPricetValuen"); = Corrente prime; printf ("% - 6st% 5dt%. 2ft%. 2fn", corrente-> simbolo, corrente-> quantità, corrente-> prezzo, corrente-> quantità * corrente-> prezzo); corrente = corrente-> prossimo; printf ("% - 6st% 5dt%. 2ft%. 2fn", corrente-> simbolo, corrente-> quantità, corrente-> prezzo, corrente-> quantità * corrente-> prezzo); return (0);}

Questo codice sorgente è piuttosto lungo, ma crea semplicemente una seconda struttura, collegata alla prima. Non lasciare che la lunghezza del codice sorgente ti intimidisca.

Le righe da 13 a 15 dichiarano i tre puntatori di struttura standard richiesti per un ballo di elenco collegato. Tradizionalmente, sono nominati prima, attuali e nuovi. Giocano nel quarto membro della struttura, in seguito, trovato nella riga 11, che è un puntatore della struttura.

Non usare typedef per definire una nuova variabile di struttura quando si crea un elenco collegato. Un esempio di lista collegata primitiva non usa typedef, quindi non è un problema con il codice, ma molti programmatori C usano typedef con le strutture. Stai attento!

Il nome della variabile new, usato nella riga 15, è una parola riservata in C ++, quindi se vuoi essere bilingue, cambia il nome della variabile in new_struct o in qualcosa di diverso dalla parola new.

Quando viene riempita la prima struttura, la Linea 30 assegna un puntatore NULL all'elemento successivo.Quel valore NULL chiude la fine dell'elenco collegato.

La riga 32 crea una struttura, inserendo il suo indirizzo nella nuova variabile del puntatore. L'indirizzo viene salvato nella prima struttura della riga 38. Ecco come viene mantenuta la posizione della seconda struttura.

Le righe da 40 a 43 riempiono le informazioni per il secondo puntatore, assegnando un valore NULL all'elemento successivo della Linea 43.

Il collegamento avviene quando i contenuti delle strutture vengono visualizzati. La riga 48 cattura l'indirizzo della prima struttura. Quindi la linea 54 acquisisce l'indirizzo della struttura successiva all'interno della prima struttura.

Esercizio 1 : Digitare il codice sorgente da Un esempio di elenco collegato primitivo nel proprio editor. Anche se è lungo, digitarlo perché dovrai modificarlo di nuovo più tardi (se non sei abituato a farlo ormai). Costruisci ed esegui.

A differenza degli array, le strutture in una lista collegata non sono numerate. Invece, ogni struttura è collegata alla struttura successiva nell'elenco. Finché si conosce l'indirizzo della prima struttura, è possibile elaborare l'elenco fino alla fine, contrassegnato da un NULL.

Un esempio di lista collegata primitiva mostra un codice sorgente sciatto con un sacco di codice ripetuto. Quando vedi più istruzioni come questa nel tuo codice, dovresti immediatamente pensare a "funzioni". "

UN ESEMPIO DI MIGLIORE ELENCO COLLEGATO

#include #include #include #define ARTICOLO 5 struct stock {char symbol [5]; quantità int; prezzo fluttuante; struct stock * next;}; struct stock * prima; struct stock * current; struct stock * new; struct stock * make_structure (void); void fill_structure (struct stock * a, int c); void show_structure (struct stock * a); int main () {int x; for (x = 0; xnext = new; current = new;} fill_structure (corrente, x + 1);} current-> next = NULL; / * Visualizza database * / puts ("Portafoglio di investimenti"); printf ("SymboltSharestPricetValuen "); current = first; while (current) {show_structure (current); current = current-> next;} return (0);} struct stock * make_structure (void) {struct stock * a; a = (struct stock *) malloc (sizeof (struct stock)); if (a == NULL) {puts ("Qualche tipo di errore malloc ()"); exit (1);} return (a);} void fill_structure (struct stock * a, int c) {printf ("Articolo #% d /% d: n", c, ELEMENTI); printf ("Simbolo Stock:"); scanf ("% s", a-> simbolo); printf ("Numero di azioni: "); scanf ("% d ", & a-> quantità); printf (" Prezzo quota: "); scanf ("% f ", & a-> price);} void show_structure (struct stock * a) {printf ("% - 6st% 5dt%. 2ft%. 2fn", a-> simbolo, a-> quantità, a-> prezzo, a-> quantità * a-> prezzo);}

Maggior parte degli elenchi collegati vengono creati come mostrato in Un esempio di lista collegata migliore. La chiave consiste nell'utilizzare tre variabili di struttura, mostrate nelle righe da 13 a 15:

  • prima contiene sempre l'indirizzo della prima struttura nell'elenco. Sempre.

  • corrente contiene l'indirizzo della struttura su cui si sta lavorando, pieno di dati o visualizzato.

  • new è l'indirizzo di una nuova struttura creata usando la funzione malloc ().

La riga 7 dichiara la struttura dello stock come globale. In questo modo, è possibile accedervi dalle varie funzioni.

Il ciclo for tra le Linee 25 e 39 crea nuove strutture, collegandole tra loro.La struttura iniziale è speciale, quindi il suo indirizzo viene salvato nella riga 30. In caso contrario, viene assegnata una nuova struttura, grazie alla funzione make_structure ().

Nella riga 35, la struttura precedente viene aggiornata; il valore della corrente non viene modificato fino alla riga 36. Prima che ciò avvenga, il puntatore nella struttura corrente viene aggiornato con l'indirizzo della struttura successiva, nuova.

Alla riga 40, la fine dell'elenco collegato viene contrassegnata reimpostando il nuovo puntatore nell'ultima struttura su un valore NULL.

Il ciclo while della riga 46 visualizza tutte le strutture nell'elenco collegato. La condizione del loop è il valore del puntatore corrente. Quando viene rilevato il valore NULL, il ciclo si interrompe.

Il resto del codice mostrato in A Better Linked-List Example consiste in funzioni che sono piuttosto auto-esplicative.

Esercizio 2 : Copia il codice da un esempio di migliore lista collegata nell'editor. Costruisci ed esegui.

Prendi nota delle istruzioni scanf () nella funzione fill_structure (). Ricorda che -> è la notazione "peeker" per un puntatore. Per ottenere l'indirizzo, devi anteporre la variabile con una & nella funzione scanf ().

Come creare un elenco collegato in Programmazione C - manichini

Scelta dell'editore

Vantaggi di base della rete - manichini

Vantaggi di base della rete - manichini

Se la verità viene detta, le reti di computer sono un problema da impostare. Perché i vantaggi di avere una rete rendono la pena di crearne uno utile. Non è necessario essere un dottorato di ricerca per comprendere i vantaggi del networking. Le reti riguardano esclusivamente la condivisione. Nello specifico, le reti riguardano la condivisione di tre elementi: informazioni, risorse, ...

Biometria L'accettazione, la privacy e la legge - manichini

Biometria L'accettazione, la privacy e la legge - manichini

La tecnologia biometrica non è affatto universalmente accettata da tutti gli utenti. Ci sono una serie di considerazioni sociali e legali che danno ad ogni organizzazione una pausa prima di fare il salto a capofitto nell'implementazione di un sistema biometrico. Le persone sono più a loro agio con i sistemi di raccolta biometrici che sono i meno intrusivi. Scanner per retina e nasi elettronici sono ...

Biometria Nozioni di base - manichini

Biometria Nozioni di base - manichini

La biometria non è roba da fantascienza. Puoi trovare una dozzina di modi più o meno efficaci per utilizzare la biometria per identificare qualcuno, ognuno dei quali si divide in due classi: la biometria fisiologica misura una parte specifica della struttura o della forma di una porzione del corpo di un soggetto. La biometria comportamentale è più interessata a come ...

Scelta dell'editore

Come creare un nuovo dizionario personalizzato in Excel 2007 - dummies

Come creare un nuovo dizionario personalizzato in Excel 2007 - dummies

In Excel 2007, è possibile creare dizionari personalizzati da utilizzare quando si esegue il controllo ortografico dei fogli di lavoro. Utilizzare il pulsante Aggiungi al dizionario nella finestra di dialogo Controllo ortografico per aggiungere parole sconosciute a un dizionario personalizzato. Per impostazione predefinita, Excel aggiunge queste parole a un file dizionario personalizzato denominato CUSTOM. DIC, ma è possibile creare una nuova personalizzazione ...

Come creare un componente aggiuntivo da un file di cartella di lavoro Excel Excel normale in VBA - modi di dire

Come creare un componente aggiuntivo da un file di cartella di lavoro Excel Excel normale in VBA - modi di dire

Sebbene sia possibile convertire qualsiasi cartella di lavoro di Excel in un componente aggiuntivo, non tutte le cartelle di lavoro traggono vantaggio da questa conversione. Una cartella di lavoro senza macro rende un componente aggiuntivo inutile. In effetti, gli unici tipi di cartelle di lavoro che traggono vantaggio dall'essere convertiti in un componente aggiuntivo sono quelli con macro. Ad esempio, una cartella di lavoro costituita da macro generiche (Sub ...

Come creare una nuova cartella di lavoro in Excel 2010 - dummy

Come creare una nuova cartella di lavoro in Excel 2010 - dummy

Se si lavora in Microsoft Excel 2010 e vuoi iniziare a lavorare in un nuovo file di cartella di lavoro di Excel, puoi facilmente creare una nuova cartella di lavoro. Per fare ciò, puoi usare un comando nella scheda File o una scorciatoia da tastiera. Fare clic sulla scheda File. Excel visualizza la visualizzazione Backstage, in cui è possibile accedere ai comandi relativi ai file. ...

Scelta dell'editore

Usa lo strumento Gomma in Adobe Illustrator CS5 - manichini

Usa lo strumento Gomma in Adobe Illustrator CS5 - manichini

Adobe Illustrator Creative Suite 5 (Adobe CS5) Illustrator è utilizzato per rimuovere rapidamente aree di grafica con la stessa facilità con cui si cancellano i pixel in Photoshop, accarezzando con il mouse su qualsiasi forma o gruppo di forme. Facendo doppio clic sullo strumento Gomma, è possibile definire il diametro, l'angolo e la rotondità della gomma. Se stai usando un ...

Trasforma gli strumenti in Adobe Illustrator CS5 - dummies

Trasforma gli strumenti in Adobe Illustrator CS5 - dummies

I più popolari strumenti di trasformazione in Adobe Creative Suite 5 (Adobe CS5) Illustrator - Rifletti, scala, inclina, rimodella e Trasformazione libera: sono facili da usare e modificano rapidamente la tua illustrazione. Lo strumento Rifletti Niente è simmetrico, giusto? Forse no, ma gli oggetti non creati simmetricamente in Illustrator possono sembrare off-kilter. Utilizzando lo strumento Rifletti, si ...

Quando utilizzare Adobe CS5 Illustrator - dummies

Quando utilizzare Adobe CS5 Illustrator - dummies

Utilizzando Adobe Creative Suite 5 (Adobe CS5) Illustrator anziché Photoshop , ottieni diversi benefici. Potresti aver sentito che Illustrator è migliore per la grafica vettoriale, ma perché e che altro porta? Illustrator può salvare ed esportare immagini nella maggior parte dei formati di file. Scegliendo di salvare o esportare, è possibile creare un ...