Tag: 迭代器

c circular double linked-list:遍历末尾节点的fwd / rev给出不同的指针地址

相关post: c circular double linked-list delete_node – iterate在删除后首次遍历已删除的节点 所有,在删除该节点之前实现搜索节点连接行号“x”,我遇到了一个问题,正向和反向搜索都识别出正确的节点,但是反向搜索报告了调用者节点地址的指针而不是前锋? 这仅适用于最后一个节点(最高行号)。 如果仅使用转发搜索(pba_fwd_iter_test),则会正确删除最后一个节点。 但是,如果使用反向搜索(pba_rev_iter_test),那么地址设置为“(victim-> next) – > prev = victim-> prev;” 不正确,它设置“(victim-> next) – > prev =(victim-> next) – > prev”。 例如,使用反向搜索到达终端节点然后执行delete_node会导致以下结果: 49: 7 – (line to delete) This is a line of text that is somewhere around 50 to 80 characters in length 48 – prev: […]

c链表 – 是否可以创建有效负载独立迭代器function?

所有,在我的应用程序中,我有许多正在创建的链接列表。 例如,一个(结构记录)保存具有数百个节点(文本行)的脚本文本,第二个类型链接列表(struct srch_results)保存搜索结果,使用strstr()搜索第一个列表。 应用程序中可以有多个列表。 问题是我发现自己为每个列表类型重新创建每个正向/反向迭代器,这基本上是复制代码并更改列表的结构类型。 例如,遍历struct记录的一组函数和遍历struct srch_results的一组函数是: // Simple structure to use as the base for depo double linked list struct record { char *line; int lineno; int linetype; struct record *prev; struct record *next; }; typedef struct record rec; // Simple structure to use as the base for search results double linked list struct […]

如何通过Java中的指针算法访问数组元素

鉴于C中的以下声明,我可以对地址应用“+”,并访问其他元素。 char toto[5]; 换句话说,应用此运算符+ toto+0x04 在Java中访问不同的数组元素。 还有另一种在java中实现此操作的方法吗? 非常感谢

使用迭代器接口实现链表

这是问题所在。 编写一个函数,用于将多个(已排序)链接列表合并到一个已排序的链接列表中。 此函数应通过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 circular double linked-list delete_node – iterate在删除后首次遍历已删除的节点

全部,在GNU c中,我有一个循环的双链表我试图实现一个delete_node函数。 它适用于除节点0之外的所有节点。它确实删除(free())节点0,但第一次在删除节点0后遍历列表时,它仍然存在于第一次传递,导致条件停止迭代到失败。 实施的基础是: struct record { char *line; int lineno; int linetype; struct record *prev; struct record *next; }; typedef struct record rec; void iterfwd (rec *list) { rec *iter = list; // second copy to iterate list if (iter == NULL) { fprintf (stdout,”%s(), The list is empty\n”,__func__); } else { do { […]