Реализация связанного списка с интерфейсом итератора - PullRequest
2 голосов
/ 10 сентября 2011

Вот проблема.

Напишите функцию для объединения нескольких (отсортированных) связанных списков в один отсортированный связанный список. это функция должна обращаться к элементам через интерфейс Iterator (не обращаться к элементам через связанный список напрямую). Аргументы процедуры слияния представляют собой массив Итераторы и размер массива. Возвращаемое значение должно быть другим Итератором с Реализация базового списка.

Шаги:

(1) Реализовать связанный список с интерфейсом итератора. Определите элемент в списке, как показано ниже:

typedef struct
{
int idno;
char name[25];
float marks;
} Element;

(a) List createList ();

(b) Вставка списка (Список L, Элемент e);

(c) Void printList (Список L);

(d) Итератор initIterator (Список L);

(e) логическое значение hasMoreElements (итератор I);

(f) итератор moveNext (итератор I);

(2) Реализовать функцию слияния.

iterator merge(iterator I[],int size)

Эта функция объединит элементы во всех списках, упорядоченных по атрибуту. "Метки". Функция слияния должна получить доступ к списку через функции итератора.

(3) Реализация функции драйвера.

Заполнить списки из входных файлов (предоставляется в качестве поддержки). Вызовите слияние и сохраните данные в результирующем объединенном списке в выходной файл.

Файлы поддержки: test1.txt, test2.txt, test3.txt, test4.txt, test5.txt, test6.txt, test7.txt, test8.txt

Результаты: dataDef.h, mergeOps.c, mergeOps.h, main.c, output.txt

Теперь я не хочу решения для этого, но я хочу знать, что такое интерфейс итератора. Я никогда не слышал об этом раньше.

И как мне реализовать связанный список с интерфейсом итератора. Что это значит?

Также он использует тип данных iterator что бы это было?

1 Ответ

4 голосов
/ 10 сентября 2011

Итератор - это просто обобщенный термин для чего-то, что позволяет вам проходить контейнер (например, массив, список и т. Д.).

Из Википедия ,

В компьютерном программировании итератор - это объект, который позволяет программист, чтобы пройти контейнер. Различные типы итераторов часто предоставляется через интерфейс контейнера. Хотя интерфейс и семантика данного итератора фиксирована, итераторы часто реализуется с точки зрения структур, лежащих в основе контейнера реализации и часто тесно связаны с контейнером включить операционную семантику итератора. Обратите внимание, что итератор выполняет обход, а также дает доступ к элементам данных в контейнер, но не выполняет итерацию (т. е. не без некоторых значительная свобода, взятая с этой концепцией или с тривиальным использованием терминология). Итератор поведенчески похож на базу данных курсор.

Поскольку ваше назначение говорит о создании итератора без прямого доступа к элементам, вы можете взглянуть на Шаблон проектирования итератора

Дополнительная информация об итераторе

...