ADT is not a real type. That's why he called ADT. Is the 'node' ADT? Not really, IMO. It can be part of one, for example, a linked ADT list. Is 'this node I just created to contain thingys' ADT? Absolutely not! This is, at best, an example of an ADT implementation.
In fact, there is only one case in which ADT can be displayed as code, and that as template classes. For example, the std :: list from C ++ STL is the actual ADT, not just an example of an instance of one. std::list<thingy> , on the other hand, is an example of an ADT instance.
Some may say that a list that can contain anything that obeys some interface is also an ADT. I would not agree with them. This is an example of an ADT implementation that can contain a large number of objects, which everyone must obey a specific interface.
A similar argument can be made about the requirements of std :: list "Concepts". For example, type T must be copied. I would step back from this, saying that these are just the requirements of the ADT itself, while the previous version actually requires specific identification. Concepts of a higher level than interfaces.
Indeed, ADT is very similar to a โtemplateโ, except that with ADT we are talking about algorithms, big O, etc. With templates, we talk about abstraction, reuse, etc ... In other words, templates are a way to create something that implementations solve a particular type of problem and can be extended / reused. ADT is a way to create an object that can be manipulated using algorithms, but is not extensible.
source share