I would say that many practical stack implementations are written using arrays. For example, the .NET Stack implementation uses an array as a backup storage.
Arrays are generally more efficient, as you can keep the stack nodes all next to it in continuous memory, which can fit nicely into your fast cache lines on the processor.
I assume that you see realistic stack implementations that use linked lists, because they are easier to write and do not force you to write a little extra code to manage the storage of arrays, as well as with the growth / copy / reserve heuristic space.
In addition, if you really want to use small memory, implementing a linked list may make sense, since you are not βlosingβ space that is not currently in use. However, on modern processors with a large amount of memory, it is usually better to use arrays to take advantage of the cache that they offer, rather than worry about page problems using the linked list method.
source share