Adoro CandiedOrange's
answer anche se una coda o uno stack possono essere implementati utilizzando un elenco collegato, o un elenco collegato non terminato, o una rappresentazione di array completamente contigua, o qualcos'altro.
Ma voglio essere pienamente d'accordo, echo e affinare una parte che riguarda davvero i progetti che fanno less . Il minimalismo è molto utile per un design in tutti i modi, dall'avere un minor numero di modi per abusare di un progetto per fornirgli più spazio per essere implementato in modo efficiente, per esprimere meglio le tue esigenze nel codice che utilizza un particolare design (uno che fa meno racconta i lettori del tuo codice tutte le cose che non farai).
Le pile LIFO e le code FIFO tipicamente fanno meno di, diciamo, una lista doppiamente collegata e questo non rende i loro progetti inferiori. In un certo numero di casi, potrebbe renderli superiori. E questo vale anche per gli oggetti tangibili nel mondo reale. Ad esempio, qualcuno potrebbe chiedere: "perché usare uno di questi" ?
..."quando ne hai uno?"
Edovrebbeessereabbastanzaovvioinquestocaso.Maciòvaleancheperiprogettinelsoftware.Faredipiùnonènecessariamenteequivalenteasuperiore.Quandositrattadiefficienzagiornaliera,nonsitrattasemprediutilizzarealgoritmiall'avanguardiaecodicivettorialiparallelizzati.Avoltesitrattasolodiassicurartidinonpagarepercosechenontiservono.Usareprogettichefornisconomoltopiùdiquellochetiservespessoestraggonoqueltipodicosto,comequelmultitoolsopraquandotuttociòdicuihaiveramentebisognoèuncoltelloaffilatopertagliareilsashimi.
Enaturalmentequandodichiarichiaramenteituoirequisitidiprogettazioneedici"Tutto ciò di cui ho bisogno è un coltello affilato per tagliare il sashimi", allora gli implementatori possono trovare implementazioni molto più efficienti e affidabili in un breve periodo di tempo per quello una serie ristretta di requisiti che se tu dicessi "Uhh, non so di cosa ho bisogno.Qui c'è una lista di tutte le possibilità di cose che potrei o non potrei avere bisogno", a quel punto potrebbero volerci anni e poi consegnarti Multitool analogico. E naturalmente, se ti vedo portare con te un coltello da sushi, posso dedurre più facilmente che probabilmente stai tagliando il pesce e capisci le tue intenzioni che se avessi in mano un multitool.