【问题标题】:Implementing linked list with iterator interface用迭代器接口实现链表
【发布时间】:2011-11-14 06:14:10
【问题描述】:

这就是问题所在。

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

步骤:

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

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

(a) 列表 createList();

(b) 列表插入(List L, Element e);

(c) 无效 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 的数据类型,那会是什么?

【问题讨论】:

  • 呃,你确定你说的是c吗?
  • @Brian Roach 我非常喜欢......我也可以发布剩下的问题......
  • Iterator 是一个自定义结构,您可以查看 MSDN 上的 C++ 等效项 - iterator Struct
  • @Devendra - 我不会将 OP 与 C++ 进一步混淆。显示的界面显然是 C 风格的界面(或者是一个在将脚趾伸入 C++ 水域时遇到了很多麻烦的人)。

标签: c iterator linked-list


【解决方案1】:

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

来自wikipedia

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

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

更多关于迭代器的信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-10
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多