2015-02-01 4 views
2

Непонятно из того, что я прочитал о ADTS и структурах данных здесь, и где какая разница между ними. Предположим, у меня есть класс, у которого есть личные члены данных (массив), и у меня есть функции, которые ограничивают нажатие и выскакивание элементов из элемента данных, чтобы происходить только сверху. Это будет стек, конкретная структура данных. Но это также будет ADT:Может ли структура данных быть вызвана абстрактным типом данных?

«ADT - это совокупность данных и набор операций над этими данными». («Абстракция данных и решение проблем с помощью C++», Каррано, стр. 17).

Но так как Википедия называет АДТ «чисто теоретическими сущностями», является ли вышеуказанный класс ADT, а реализация, объект, структура данных?

+0

Не допускайте излишней задержки в этой терминологии. CS - достаточно молодая тема, что мы не сходились по «стандартной» терминологии. –

+0

Спасибо, Чарли Мартин. Не похоже, что есть перекрытие и некоторая путаница. – beatleman

+0

Вот почему технические документы всегда - или, по крайней мере, должны всегда - начинать с раздела терминологии, чтобы объяснить, что вы думаете, что вы подразумеваете под такими терминами, как ADT. –

ответ

0

A структура данных любая вид организации данных; ADT - это особый вид (и использование) структур данных.

0

Ну, своего рода сортировка. ADT - это описание, состоящее из описания пространства состояний и операций, определенных для этого пространства состояний. Таким образом, целое число представляет собой набор состояний, соответствующих диапазону чисел, которые вы представляете, вместе с операциями add, subtract и multiply. (Мы будем игнорировать разделение, так как нам нужно было бы точно определить, какое целое деление мы имеем в виду.)

Целое число в компьютерной программе действительно является экземпляром в том смысле, что это конкретный кусок памяти и соответствующий код для реализации ADT.

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

0

Абстрактный тип данных определяется как набор поведений и свойств, общий для всех реализаций этого абстрактного типа данных. Тип данных .NET List имеет длину, имеет данные и операции с данными, такими как получение фронта, возврат, последовательность данных упорядочивается, ...
A std :: list <> представляет собой еще одну реализацию абстрактных данных тип списка.
Вы находите тип списка на другом языке программирования, вы сможете узнать, что он делает, из ваших знаний об абстрактном списке типов данных и о том, как они работают на других языках.

И если этот список на этом языке будет начать рисовать картинки на экране, вы по праву удалить этот язык из системы;)

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

В качестве примера, если бы вы опросили мнения по определениям абстрактного типа данных «нечеткий набор», скорее всего, вы не получите ни одного ответа.

На стороне примечания, если вы ищете какой-то более теоретический подход к вашему вопросу, вы можете захотеть найти материал по «видам».Например, общий список, примененный к определенному типу данных, который должен быть содержаться в этом списке, будет называться конструктором типа, поскольку он создает конкретный тип List < 'a> при применении List <> к типу' a, со списком <> более высокого типа. (Надеюсь, я получил это правильно ...). Тем не менее, это выходит за рамки этого ответа, чтобы подробнее рассказать об этом.

2

№ «Инициированный аннотация» по существу является противоречием в терминах.

+0

Хотя это просто абстрактный (класс), это похоже на ADT. Я спрашивал, будет ли конкретный объект (объект) называться структурой данных. – beatleman

+0

Не меняет свой ответ. Если вы изменили «созданный» на «конкретный», например, у вас тогда будет «конкретный абстрактный», который также является оксюмороном. Здесь нет необходимости придумывать новую терминологию. – EJP

Смежные вопросы