Einen Queue kann man z.B. verwenden, wenn man eine Reihe von Jobs hat, die hintereinander abgearbeitet werden sollen.
Einen Stack kann man bei rekursiven Algorithmen gebrauchen, also etwa bei Parsern oder dem Abarbeiten einer Baumstruktur o.ä.. Man kann einen Stack auch zum Rechnen verwenden, wenn man z.B. die
umgekehrte polnische Notation benutzt (z.B.
3 8 + 2 *
=
(3+8)*2
in Infix-Schriebweise). Dabei wird der Term von links nach rechts abgearbeitet -- Trifft der Parser auf eine Zahl, wird sie auf den Stack gepusht, trifft er auf einen Operator, popt er die beiden obersten Werte vom Stack, verrechnet sie, und pusht das Ergebnis wieder auf den Stack.
Und eine Liste ist eben für alles mögliche, wo man eine Liste von Dingen speichern/verwalten muss...
Bessere Beispiele fallen mir jetzt nicht ein...