Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C] Liste circolari

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    396

    Liste circolari??

    Salve, come si crea una lista circolare?

    Dove, l'ultima cella punta alla prima, e il puntatore principale punta all'ultimo elemento.

    Ultima cosa, infine devo creare una funzione di inserimento newcella.
    Cioè, inserisco una nuova cella in fondo alla lista, essa dovra puntare al primo elemento della lista.

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

    Moderazione

    Con quale linguaggio? Va indicato, come da Regolamento.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    396
    Opss scusate tanto mi ero scordato...

    cmq è il linguaggio C.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    396
    Perpiacere qualche aiutino perpiacere??

    è molto importante....

    come si crea questa LISTA CIRCOLARE in linguaggio C dove l'ultima cella punta alla prima e il puntatore Testa punta all'ultima cella?
    Come faccio ad inserire un elemento in coda?

  5. #5
    basta che crei una normale lista ... e l'ultimo elemento invece di farlo puntare al nulla lo fai puntare alla testa

    la lista, o linked list, deve avere sempre 2 elementi (anche se esistono varie soluzioni):
    - head
    - tail

    head contiene il puntatore alla testa mentre tail contiene il puntatore all'elemento successivo

    per aggiungere in coda un nuovo elemento ti basta scorrerti TUTTA la lista confrontando tail e head e quando li trovi uguali hai trovato la fine ... modifichi tail facendolo puntare al nuovo elemento e modifichi il tail del nuovo elemento per farlo puntare a head

    e hai la tua circular list
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  6. #6
    Devi utilizzare una struttura simile alla seguente :

    codice:
    struct cir_list
    {
     struct cir_list *next /* punta al prossimo elemento */
     .....                 /* altri campi */
    };
    Il tuo puntatore principale che chiameremo tail punterà alla coda della lista .
    codice:
    struct cir_list *tail;
    La funzione newcell opererà nel seguente modo:
    Se tail punta a NULL ,caso di prima inserzione ,allora fa puntare tail alla cella corrente.La testa e la coda coincidono.
    Se tail non punta a NULL ,che significa che c'è una cella testa , allora effettua le seguente operazioni:
    1) Salva in un puntatore temporaneo il campo next di tail (salva la testa della lista).
    2) Modifica il campo next della coda in modo che punti all'ultima cella inserita.
    3) Imposta il campo next della cella inserita uguale al puntatore temporaneo (punta alla testa della lista) .
    4) Modifica tail in modo che punti all'ultima cella inserita .
    Spero che questo ti chiarisca un po le idee . Buon lavoro

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.