2011-11-10 8 views

risposta

11

Perché non usare/wrap LinkedList<T>? Ha metodi AddFirst e AddLast. Puoi avvolgerlo per nascondere i metodi AddBefore ecc.

Il termine comune per questo è deque (significa coda a doppio fine). Se per qualche ragione il wrapping di un LinkedList<T> non è sufficiente (dovrebbe!), Si potrebbe guardare all'implementazione di Eric Lippert di uno immutable deque.

9

Sembra che tu voglia qualcosa chiamato normalmente deque. Il più vicino a conoscenza di .NET è LinkedList<T>. Non credo che ce ne sia uno costruito da un buffer circolare (espandibile come richiesto), che è probabilmente il modo in cui vorresti crearlo da zero.

Ovviamente, è possibile implementarlo da soli, ma probabilmente utilizzerei lo LinkedList<T> a meno che non avessi una buona ragione per non farlo. Eric Lippert ha anche an immutable implementation you could look at (blog post covering it), ma ovviamente vorresti scrivere una serie di test, ecc ... e non puoi vuoi uno immutabile.

+0

dovrebbero prendere in considerazione la ridenominazione di questo sito per askjonskeet.com –

+1

@ SethReno: Questo è già preso ... provalo :) –

0

Perché non utilizzare uno LinkedList<T>? Permette di aggiungere inizio, fine e ovunque nel mezzo. Se non si desidera esporre alcuni dei metodi LinkedList<T>, si può sempre avvolgere e solo esporre i metodi che si desidera esporre.

Problemi correlati