mja, datastructuur is een vrij globaal concept

.
In pc's heb je eigenlijk maar 2 manieren om een blok data op te slaan, ofwel alles bijeen (cfr arrays), ofwel alles gescheiden, waarbij je pointers bijhoudt tussen objecten (cfr linked lists en boomstructuren).
De datastrctuur zelf is deze manier van opslaan. Een stack is dan bv doorgaans 1 blok data waar je enkel data kan toevoegen aan de top en iets afhalen aan de top. Dat is dus die datastructuur.
Je ADT is dan een interface (zoals een klasse) die heel deze functionaliteit (toevoegen -> push, verwijderen->pop) implementeert en de gebruiker afschermt van eigenlijk de datastructuur zelf.
Dus zoals jij "doorhad".
Jouw vraag ivm list. Valt te zien wat je bedoelt. Dit:
A->B->C->D->E->null
is een lijst dus, dat op zich is een datastructuur. Je hebt immers enkel de dataelementen (A,B,C,D,E) die naar elkaar wijzen, mooi lijstje dus.
Echter kan je nu een container definiëren, zoals:
Code:
class List
{
public:
add(item);
remove(item);
getFirstElement();
getNextElement(currentElement);
}
(geen realistisch vb. of course).
Dit noemt nu ook een lijst, maar is duidelijk je ADT, de interne datastructuur gebruikt om voor jou de container List te leveren is afgeschermd. Het is zelfs niet 100% nodig dat intern een lijst zoals hiervoor wordt gebruikt, het kan zijn dat jouw library om diverse redenen liever een array gebruik thiervoor.
Maar dus "datastructuur" is een vrij globaal concept. Het kan dus al eens voorvallen dat je boek datastructuur gebruikt wanneer ze eigenlijk het ADT bedoelen.