почему стек называется абстрактным типом данных. Если стек - это adt, то как реализовать стек?

Стек называется абстрактным типом данных, который является не
чем иным, как интерфейсом. Тогда почему стек попадает под структуру
данных. Это структура данных или абстрактный тип данных? Оба они
одинаковые или разные?

Из Википедии:

> 
> [`Абстрактные типы данных`](https://en.wikipedia.org/wiki/Abstract_data_type) - это чисто
> теоретические объекты, используемые (среди другие вещи), чтобы
> упростить описание абстрактных алгоритмов, классифицировать и
> оценивать структуры данных.
> 
> 
>      
> В информатике структура 
> является особым способом хранения и организации данных на
> компьютере, чтобы он мог эффективно использоваться
> 
> 
>      
> Один из способов описания [`stack`](https://en.wikipedia.org/wiki/Stack_%28abstract_data_type%29) - как последний, первый (LIFO)
> абстрактный тип данных и линейная структура данных. Стек может
> иметь любой абстрактный тип данных в качестве элемента, но
> характеризуется двумя основными операциями, называемыми push и pop
> (или pull).
> 
> 
> 

Таким образом, можно сделать вывод, что абстрактные типы данных
являются теоретическими, но когда они реализуются, они называются
структурами данных.

Чтобы быть более ясным:

Тип данных можно считать абстрактным, если он определен в
терминах операций над ним, и его реализация скрыта (так что мы
всегда можем заменить одну реализацию на другую, например, на
причины эффективности, и это не будет мешать чему-либо в
программа).



Стек представляет собой абстрактный тип данных, и его также
называют **структурой линейных данных** . Это следует
за последним, вначале (LIFO) strategy.so его частью структуры
данных ...



Абстрактный тип данных (ADT) представляет собой теоретический
набор спецификаций набора данных и набора операций, которые могут
выполняться для данных в наборе. Тип данных называется абстрактным,
если он не зависит от различных конкретных реализаций.

скажем, Integer поддерживает операции сложения, умножения,
деления.

Эти операции не будут работать с данными String, поскольку они
не могут поддерживать multipication.hence Integer не является
ADT.

теперь вы получите точку,

Если ваши операции над типами данных не заботятся о типе данных,
это называется Abstract Data Structure.eg Stack, list, queue ...
здесь эти вещи поддерживают операции типа push (), pop (), add (),
delete() Not заботясь о том, что мы нажимаем, поп, удаляем.

Здесь, в зависимости от типа реализации (List, Stack, Queue), мы
решаем, как управлять этими ADT.

Почему Stack является абстрактным типом данных?

```
`Stack s = new Stack<>();
List l = new LinkedList<>();
s.push(45);
s.push("str");
//s.push("String");
if(s.peek().equals(45)){
    System.out.println("Treu");
}`

```

Я не думаю, что нам нужно больше объяснений.