Различия в них в том, что первая структура данных будет работать с производными от класса Object, тогда как вторая принимает только определённый тип данных.
Вот код C#, для добавления и извлечения данных из стека:
01 |
|
Stack<string> stack = new Stack<string>(); |
|
02 |
|
stack.Push("1"); |
03 |
|
stack.Push("2"); |
04 |
|
stack.Push("3"); |
05 |
|
|
06 |
|
while (stack.Count > 0) |
07 |
|
{ |
08 |
|
MessageBox.Show(stack.Pop()); |
09 |
|
} |
10 |
|
</string></string> |
Если запустить этот код, то увидите, что список возвращён в следующем порядке: 3, 2, 1.
1.9 Queue и Queue<>(очередь).
Очередь - ещё одна из многих структур данных в C#. Очередь очень похожа на стек, но есть одно важное отличие. Вместо того, чтобы следовать алгоритму LIFO, очередь следует алгоритму FIFO, что расшифровывается как First-In-First-Out (первый пришёл - первый обслужен). К примеру, когда вы отправляете статью для утверждения на сайт, то там она добавляется в очередь на утверждение. Таким образом, объекты, добавленные первыми, первыми будут и обработаны.
Добавление элемента в очередь (аналогичено Push для стека) осуществляется методом Enqueue:
1 queue.Enqueue("1");
Извлечение элемента - методом Dequeue:
1 queue.Dequeue();
Аналогично, метод Peek позволяет просмотреть верхнее значение в очереди, не удаляя его. Эта специфическая структура данных очень часто используется в связке со стеком.
Вот простой код для добавления и извлечения данных из очереди:
01 |
|
Queue<string> queue = new Queue<string>(); |
|
|
02 |
|
queue.Enqueue("1"); |
|
|
03 |
|
queue.Enqueue("2"); |
|
|
04 |
|
queue.Enqueue("3"); |
|
|
05 |
|
|
|
|
06 |
|
while (queue.Count > 0) |
|
|
07 |
|
{ |
|
|
08 |
|
MessageBox.Show(queue.Dequeue()); |
|
|
09 |
|
} |
|
|
10 |
|
</string></string> |
|
|
Также имейте ввиду, что очередь, как и стек, может быть определена как любого |
типа данных (Queue), так и только для одного типа (Queue<>). |