I have just got a copy of
C++ Program Design Including Data Structures (D.S. Malik) off my bookshelf, and the implementaion of queues (with the destroy queue), the linked implementaion, deriving from the linkedQueueType and so on just seems fuller to to me in C++ and if a student
understood this, then C# would be easy, things are different the other way around though, so I stick to my notion that a CS student should use unmanaged code when learning about these core building blocks.
But Java's not unmanaged code, so why did you include that on the list?