Domanda

Im scrivendo un browser di file QML. Ora, voglio realizzare un Indietro e avanti la funzione. Questa funzione è simile alla parte posteriore del browser e funzionalità in avanti. Esempio:

mi metto in "/ home / text / folder1" e selezionare "/ home / testo / folder1 / src". Ora passo in rassegna a "/ home / testo / cartella1 / src / java". Se premo indietro due volte, dovrei essere in "/ home / text / folder1", e non riesco a premere più indietro (il pulsante deve essere visualizzato in grigio o in qualche altro modo indicano che non ci sono più elementi "precedenti" da mostrare ).

Stavo pensando di attuare questo attraverso una lista doppia-linked. Tuttavia, sto avendo problemi capire dove devo inserire nuove voci alla lista, e quando devo farlo.

Prendiamo l'esempio precedente: Se invece di premere di nuovo due volte, premo di nuovo solo una volta (ora sono in "/ home / testo / folder1 / src"). Se improvvisamente andare a "casa / text / / folder2", e adesso? Come dovrebbe il mio doppio lista aspetto legato ora?

Questa è una domanda datastructure, e non l'attuazione, in modo da codice non è necessario.

È stato utile?

Soluzione

Credo che la vostra idea con un doppiamente LinkedList è un buon punto di partenza. Se si inserisce una nuova directory, si aggiunge il nuovo elemento dopo l'elemento corrente, scartando la coda della lista collegata.

Si supponga che eravamo in cartelle 1,2,3 (vale a dire che abbiamo la lista 1->2->[3], tra parentesi quadre indicano nodo corrente). Ora torniamo due volte, con conseguente [1]->2->3 se ora andiamo a una nuova cartella 4, otteniamo 1->[4], quindi abbiamo scartato la parte 2->3.

Altri suggerimenti

avrei una pila, piuttosto che una lista. Ogni navigazione in avanti mette un link sullo stack; ogni volta che si torna indietro, si rimuove l'elemento dalla pila.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top