使用迭代器接口实现链表

时间:2011-09-10 06:06:22

标签: c iterator linked-list

这是问题所在。

编写一个函数,用于将多个(已排序)链接列表合并到一个已排序的链接列表中。这个 函数应该通过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的数据类型是什么?

1 个答案:

答案 0 :(得分:4)

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

来自wikipedia

  

在计算机编程中,迭代器是一个启用a的对象   程序员遍历一个容器。各种类型的迭代器都是   通常通过容器的界面提供。虽然界面和   给定迭代器的语义是固定的,迭代器经常是   根据容器的结构实现   实现和往往紧密耦合到容器   启用迭代器的操作语义。注意一个   迭代器执行遍历并且还允许访问数据元素   一个容器,但不执行迭代(即,没有一些   对这个概念采取的重大自由或琐碎使用的概念   术语)。迭代器在行为上类似于数据库   光标。

由于您的作业谈到创建迭代器而不直接访问元素,您可以查看Iterator Design Pattern

有关迭代器的更多信息