请看 .NET 的 System.Collections.Generic.LinkedList 集合,它可以用作双端队列。 这是一个双向链接列表。
插入/删除
AddFirst
:添加到开头AddLast
:添加到末尾RemoveFirst
:从开头移除。不返回值。RemoveLast
:从末尾移除。不返回值。Peeking:
var l = new List<int>();
var last = l[l.Count - 1];
l.RemoveAt(0);
Deque<T>
(使用环形缓冲区)和一个并发无锁ConcurrentDeque<T>
:
这两个类都支持在deque的两端进行Push、Pop和Peek操作,所有操作时间复杂度均为O(1)。