这是问题所在。
编写一个函数,用于将多个(已排序)链接列表合并到一个已排序的链接列表中。这个 函数应该通过Iterator接口访问元素(不要访问元素 直接通过链表)。合并过程的参数是一个数组 迭代器和数组的大小。返回值应该是另一个带有的迭代器 基础列表实现。
步骤:
(1)用迭代器接口实现链表。 在列表中定义元素如下:
typedef struct
{
int idno;
char name[25];
float marks;
} Element;
(a)列出createList();
(b)清单插入(清单L,要素e);
(c)Void printList(List L);
(d)迭代器initIterator(List L);
(e)boolean hasMoreElements(iterator 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
的数据类型是什么?
答案 0 :(得分:4)
迭代器只是一个通用术语,允许您遍历容器(如数组,列表等)。
来自wikipedia,
在计算机编程中,迭代器是一个启用a的对象 程序员遍历一个容器。各种类型的迭代器都是 通常通过容器的界面提供。虽然界面和 给定迭代器的语义是固定的,迭代器经常是 根据容器的结构实现 实现和往往紧密耦合到容器 启用迭代器的操作语义。注意一个 迭代器执行遍历并且还允许访问数据元素 一个容器,但不执行迭代(即,没有一些 对这个概念采取的重大自由或琐碎使用的概念 术语)。迭代器在行为上类似于数据库 光标。
由于您的作业谈到创建迭代器而不直接访问元素,您可以查看Iterator Design Pattern
有关迭代器的更多信息