Контейнер ADT стандартная операция - PullRequest
0 голосов
/ 30 июня 2011

Если вы посмотрите на контейнер ADT (абстрактный тип данных) как черный ящик, он предоставляет две функции:

1. put(C, x)
2. get(C)

Первая функция поместит объект x в контейнер C. Вторая будет извлекать «следующий» объект из контейнера C, где «следующий» зависит от того, какой тип контейнера вы хотите. Реализация стека вернет элемент, который последний раз был помещен в контейнер (также известный как FILO ADT).

Мой вопрос в самой общей форме: выполняет ли функция ADT контейнера () удаление самого элемента из контейнера или просто возвращает ссылку на него для доступа, сохраняя элемент в контейнере?

1 Ответ

2 голосов
/ 30 июня 2011

если у вас есть только put() и get(), get() также должны удалить элемент, иначе у вас не будет доступа к n-му элементу для каждого n! = 1.
идея в достаточном количестве get() вариантов, вы должны иметь доступ к каждому элементу в контейнере, и если get() не удаляет элемент, последовательные get() всегда будут возвращать один и тот же элемент, поэтому доступен только первый элемент.


но, конечно, он может быть разным для каждой реализации. (например, вы можете создать ADT с помощью put (), get () и pop (), где get вернет только элемент.

...