使用迭代器接口实现链表

发布于 2024-12-04 01:33:08 字数 964 浏览 3 评论 0原文

问题就在这里。

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

步骤:

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

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

(a) List createList();

(b) 列表插入(列表 L,元素 e );

(c) 无效 printList(List L);

(d) 迭代器 initIterator(List 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

现在我不想要这个问题的解决方案,但我想知道什么是迭代器接口。 我以前从未听说过。

我如何使用迭代器接口实现链表。这是什么意思?

它还使用了迭代器的数据类型,那会是什么?

Here's the problem.

Write a function for merging multiple (sorted) linked lists into one sorted linked list. This
function should access the elements through Iterator interface (do not access elements
through the linked list directly). The arguments to the merge procedure are an array of
Iterators and the size of the array. The return value should be another Iterator with an
underlying List implementation.

Steps:

(1) Implement linked list with iterator interface.
Define the Element in the list as below:

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

(a) List createList();

(b) List insert(List L, Element e );

(c) Void printList(List L);

(d) iterator initIterator(List L);

(e) boolean hasMoreElements(iterator I);

(f) iterator moveNext(iterator I);

(2) Implement Merge function.

iterator merge(iterator I[],int size)

This function will merge the elements in all the lists ordered by the attribute
“marks”. Merge function should access the list through the iterator functions.

(3) Implement driver function.

Populate the lists from the input files (provided as support). Call the merge
function and store the data in resultant merged list to an output file.

Support files: test1.txt, test2.txt, test3.txt, test4.txt, test5.txt, test6.txt, test7.txt, test8.txt

Deliverables: dataDef.h, mergeOps.c, mergeOps.h, main.c, output.txt

Now i dont want the solution for this, but i want to know what an iterator interface is.
I have never heard of it before.

And how do i go about implementing linked list with iterator interface.What does it mean?

Also it uses a data type of iterator what that would be?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

大姐,你呐 2024-12-11 01:33:08

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

来自 维基百科

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

当您的作业讨论创建迭代器而不直接访问元素时,您可以查看 迭代器设计模式

有关迭代器的更多信息

An iterator is simply a generalized term for something that allows you to traverse a container (like an array, list, etc).

From wikipedia,

In computer programming, an iterator is an object that enables a
programmer to traverse a container. Various types of iterators are
often provided via a container's interface. Though the interface and
semantics of a given iterator are fixed, iterators are often
implemented in terms of the structures underlying a container
implementation and are often tightly coupled to the container to
enable the operational semantics of the iterator. Note that an
iterator performs traversal and also gives access to data elements in
a container, but does not perform iteration (i.e., not without some
significant liberty taken with that concept or with trivial use of the
terminology). An iterator is behaviorally similar to a database
cursor.

As your assignment talks about creating an iterator without access the elements directly, you can have a look at Iterator Design Pattern

More information on Iterator

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文