使用迭代器接口实现链表

这是问题所在。

编写一个函数,用于将多个(已排序)链接列表合并到一个已排序的链接列表中。 此函数应通过Iterator接口访问元素(不要直接通过链接列表访问元素)。 合并过程的参数是迭代器数组和数组的大小。 返回值应该是具有基础List实现的另一个Iterator。

脚步:

(1)用迭代器接口实现链表。 在列表中定义元素如下:

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

(a)列出createList();

(b)清单插入(清单L,要素e);

(c)Void printList(List L);

(d)迭代器初始化器(列表L);

(e)boolean hasMoreElements(iterator I);

(f)迭代器moveNext(迭代器I);

(2)实现合并function。

 iterator merge(iterator I[],int size) 

此函数将合并由属性“marks”排序的所有列表中的元素。 合并函数应该通过迭代器函数访问列表。

(3)实现驱动function。

填充输入文件中的列表(作为支持提供)。 调用合并函数并将结果合并列表中的数据存储到输出文件中。

支持文件: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的数据类型会是什么?

迭代器只是一个通用术语,允许您遍历容器(如数组,列表等)。

来自维基百科 ,

在计算机编程中,迭代器是一个使程序员能够遍历容器的对象。 通常通过容器的接口提供各种类型的迭代器。 虽然给定迭代器的接口和语义是固定的,但迭代器通常是根据容器实现的底层结构实现的,并且通常紧密耦合到容器以启用迭代器的操作语义。 请注意,迭代器执行遍历并且还允许访问容器中的数据元素,但不执行迭代(即,没有使用该概念或使用术语的一些重要自由)。 迭代器在行为上类似于数据库游标。

由于您的任务是关于创建迭代器而不直接访问元素,因此您可以查看迭代器设计模式

有关迭代器的更多信息

  • C中的迭代器实现
  • OOP中的迭代器模式
  • 我们还需要Iterator设计模式吗?
  • C#中的迭代器设计模式