I implemented the same structure with linked list first, with Turbo Pascal, creating stack and queue -- my small data structure --- for myself.
Later I implemented it using TList with Delphi 5 or 7. Nothing much to do because other algorithms had been done already. The reason of moving from the successful linked list to TList was that I do not have to maintain the codes related with linked list (and stack, and queue neither) myself.
With Lazarus, I changed it to TFPGMap<integer, integer>, with TFPGMap.key representing min value and TFPGMap.data representing max. Why? auto-sorting, etc. Something was easier than with TList. TList was too generic, and I had to define some details.
Every method was successful. It's not a big deal implementing a new approach. With Lazarus, I could gain from operator overloading.
Recently I changed it to dynamic array.
The best thing with dynamic array is that it's possible to pass by value -- looks so anyway. But with dynamic array, adding a value, e.g. [4,6,9,10] + [7] will cause a few times copy of the whole content (do not know exactly). With linked list, only add one more node of 7, set its prevnode to 6 and nextnode to 9, and change the nextnode of 6 to 7 and prevnode of 9 to 7.
In short lists, the gain of linked list would not be large. So, simply wondering there are any way that I can do the similar thing with linked list.