问题标签 [circular-list]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
278 浏览

c - 循环链表显示 pthread 的奇怪行为

我有一个小线程池示例供学习使用:

它采用代表两个值的简单计算(+、-、*、/)的工作结构。现在工作线程将从队列中拉出这些工作结构并执行它们。

理论就这么多了。现在的问题是,当我想以某种方式使用辅助函数 submit_work() 时,工作线程中的队列解析不起作用(提取的数据无效,当我使用 QUEUE_REMOVE 时,它会出现分段错误)。

怎么可能仅仅使用一个辅助函数,整个概念就不再起作用了?

池.c

我的意思是手动推送数据工作正常...

队列.h

如果我还应该复制 QUEUE.h 文件,请发表评论。否则你在这里找到它

博多

0 投票
2 回答
151 浏览

c++ - 复制的 std::list 中的垃圾

我的图形类看起来像:

但是当我尝试获取时,graph.neighbours(v)我会得到大量垃圾:

如何解决?

0 投票
3 回答
23063 浏览

c - 'sizeof' 对不完整类型列表结构 C 的无效应用

我正在尝试实现一种处理页面错误的替换算法。所以我正在尝试使用 malloc 创建一个循环链表,我收到以下错误:“ sizeof' to incomplete typepageInMemory 的无效应用程序”。以下是代码:

所以我不应该这样使用 malloc 吗?

0 投票
1 回答
712 浏览

c - 在循环链表中查找最大值和最小值时出错

我需要在循环链表中找到最大数和最小数,我应该将最小数移动到列表的开头(在头部之前),将最大数移动到列表的末尾(在最小值之前)

为什么我的代码在输出中给我错误?

注意:不允许使用双向链表,我们应该只使用循环链表。

0 投票
4 回答
7971 浏览

algorithm - 通过仅遍历一次来测试单个链表是否是循环的

我是一个新人,在最近的一次采访中我被问到这个问题。

问题是——通过遍历链表的每个元素一次,找出单个链表是否在任何时候都是循环的。

对此我回答说,我们将在遍历另一个链表中的列表时存储每个节点的引用,并且对于正在测试的列表中的每个节点,我们会发现引用是否存在于我正在存储引用的列表中。

面试官表示,他需要更优化的方式来解决这个问题。

谁能告诉我解决此问题的更优化方法是什么。

PS:在任何时候,我的意思都是循环。http://s22.postimg.org/g0iwevfnl/2013_06_30_15_56_34_362.jpg

0 投票
3 回答
1504 浏览

algorithm - 大树列表递归程序

我遇到了一个有趣的问题,称为大树列表问题。问题如下:

有序二叉树中,每个节点都包含一个数据元素和指向子树的“ small ”和“ large ”指针。“small”子树中的所有节点都小于或等于父节点中的数据. “大”子树中的所有节点都大于父节点。循环双向链表由上一个和下一个指针组成。

问题是采用有序二叉树并重新排列内部指针以从中生成循环双向链表。“”指针应该扮演“上一个”的角色,“”指针应该扮演“下一个”的角色。该列表应排列成节点按升序排列。我必须编写一个递归函数并将头指针返回到新列表。

该操作应在 O(n) 时间内完成。

我知道递归会沿着树向下,但是如何递归地将大小子树更改为列表,我还必须将这些列表与父节点一起附加。

我应该如何解决这个问题?..我只需要一个解决问题的方向!

0 投票
2 回答
363 浏览

algorithm - Shrinking a circular buffer

I'm trying to implement the shrinking operation for a circular buffer. The buffer has a start pointer( m_start ) and stores the number of elements( m_numelements). When the buffer is full I just purge the old value.

Say we have a array of size 16. m_start = 9 m_numelements = 11.

I want to shrink this array into an array of size 8( Can discard elements ).

The constraint here is that m_start( 9 ) of the old array should map to the m_start % new capacity ( 9 % 8 = 1 ) of the new array.

I tried writing the code but ended up with a lot of if-else ladder. Any efficient implementation for this ?

0 投票
1 回答
3466 浏览

c++ - 在 C++ 中打印出循环链表?

我想打印一个循环链表。你会如何打印出来?

这个是用于常规链表的。如果我为循环列表实现这个,它会永远循环。有什么想法可以限制并打印出一个圆圈吗?

我的节点结构如下

0 投票
3 回答
4167 浏览

c++ - C++ 循环链表:删除元素

我完成了插入,在循环链表中搜索,但为了删除,我得到了编译器错误......

以下是我的节点结构。

在主函数中我调用

这是删除 head 元素和 temp 指向的另一个元素。但我收到错误

有人知道从循环列表中删除一个元素吗?

我将其更改为删除目标-> p_next;但现在它会删除列表中的所有内容。任何想法???

0 投票
5 回答
60098 浏览

java - 循环ArrayList(扩展ArrayList)

所以我的程序需要一种循环ArrayList。

只有循环的东西必须是 get(int index) 方法,这是原始的:

如果 index 为 -1,它应该获取索引为 ArrayList.size()-1 的元素,如果 index 为 ArrayList.size(),它应该获取索引为 0 的元素。

我想到的实现这一点的最简单方法是简单地从 java.util 包中扩展 ArrayList 并覆盖 get(int index) 这样它就不会为上面的两个索引抛出 IndexOutOfBoundsException ,而是将它们更改为我想要的。对于任何其他超出范围的索引,它将抛出 IndexOutOfBoundsException。

但是,由于 elementData(index) 访问

我不能让它工作,因为我的班级看不到它,因为它是私人的。

另外,我不想为此使用任何外部库,只是因为我认为没有适合我的需要,因为我不想要一个真正的圆形数组,而只是它的一部分功能,其余的都是常规的 ArrayList。

所以我有两个问题:

我怎样才能使这项工作?有没有办法在不将整个 ArrayList 类以及 AbstractCollection、Collection 和 Iterable 复制到我的程序中的情况下做到这一点?即使对我来说,这似乎也是糟糕的设计。

如果我能以某种方式使它工作,还有什么我应该注意的吗?如果我进行上述更改,是否会仅按照我想要的方式更改类的行为,还是会出现任何其他不希望的行为更改?

编辑: 感谢您的回答,这是我所做的:

它将环绕 ArrayList,但只有一个。如果我尝试使用除常规 ArrayList 索引之外的任何其他元素访问除第一个和最后一个元素之外的任何其他元素,我希望它抛出异常。