问题标签 [singly-linked-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 投票
4 回答
5445 浏览

linked-list - 将链表中的元音移到开头

我正在解决一个问题,其中给定一个链接的字符列表,我们必须将元音移动到开头,以便元音和辅音都按时间顺序排列。那是它们在原始列表中出现的顺序。

Input : S->T->A->C->K->O->V->E->R->F->L->O->W

Output : A->O->E->O->S->T->C->K->V->R->F->L->W

我通过遍历列表一次并创建了两个称为元音和辅音的列表来完成它,然后将它们合并。

可以在不创建额外列表的情况下完成吗?我的意思是就地可能使用指针操作?

0 投票
2 回答
1151 浏览

java - 不知道如何实现只有最后一个节点作为参考的循环链表

我被要求重新实现链表的定义方式。任务是:删除对 LinkedList 类中第一个节点的引用,以便我只跟踪列表中的最后一个元素。我还被要求将最后一个元素的 next() 引用到第一个元素,这样这个链表就变成了一个循环链表。有没有一种优雅的方式来做到这一点?

这是我到目前为止所拥有的:


这是原始代码:

0 投票
1 回答
111 浏览

c++ - 链表数据访问

在 C++ 中,如果我有以下形式的二叉搜索树 (BST)

像这样访问 leftChild 数据是否合法:

此外,有时我看到链表节点对子节点使用 *node,而其他时候他们只使用节点。何时/为什么要使用其中任何一个。对不起,字符串问题只是好奇。

0 投票
1 回答
1681 浏览

c - C中链表中的'addFirst'方法

我有一个我创建的列表:

我的'addFirst':

问题是当我将新的“节点”添加到列表中时,它在函数中工作(使用 DDD 调试器查看),但是当我退出函数时,我的列表保持不变。

我知道这可以通过让我的方法返回 astruct list_t*而不是来完成void,也可以通过将指向 head 指针的指针作为参数 ( struct list_t** PtoHead) 传递,但我的问题是是否可以使用我的方法执行此操作(即返回void并有一个指向head作为参数的指针)。

0 投票
1 回答
4265 浏览

java - 反向单链表Java,检查是否循环

我用 Java 实现了一个单链表。我可以反转一个单链表并检查给定的列表是否是循环的。有趣的是我也可以反转一个循环列表,这很奇怪也很有趣。能够反转循环列表是否有意义?实际上它应该一遍又一遍地反转,对吗?目前,我下面的代码能够反转循环列表并终止。这是对的吗?

0 投票
3 回答
1803 浏览

c - 将节点添加到链表时出现分段错误

我有一个名为 add() 的函数来向链表添加条目。

请注意,存储在链表节点中的“值”本身就是一个指向结构的指针。我遇到了分段错误

这可能是因为我没有为 entry_t 结构分配内存。我想知道这是一个常见的用例吗?如果是,我该怎么做。我必须做吗

在做任务之前?还有更优雅的方法来实现这一点吗?

附加信息。

当我运行 gdb 我得到

sp_entry 看起来像是一个空指针。这是在 add() 函数中的 malloc 之后打印的。而且我的代码已与“-g -O0 -Wall”结合使用。没有任何警告

0 投票
1 回答
128 浏览

c++ - 删除多个元素时出错。删除方法。单链表

我(在一点帮助下)用 C++ 制作了一个单链表,它将输入的元素从最小到最大排序。我想从同一个值中删除几个元素,但是当代码似乎删除更多时,我使用的 Delete 方法似乎只能删除一个。我尝试使用一个调用 Delete 方法的循环来删除几个元素,当它删除一个元素时,它就变成了分段错误。我会很感激一些帮助。谢谢你。

}

}

0 投票
1 回答
6415 浏览

c++ - 在 cpp LinkedList 程序中将两个多项式相乘

我正在用 C++ 做一个多项式程序,我们应该用一个单链表来实现它。是的,这是一个家庭作业。我已经完成了大部分程序,但我只是坚持我的乘法运算符重载。这是我的 operator* 函数:

作为参考,我现在只是在链接列表的末尾添加一个新元素。

这是我的 AddElement 函数:

节点只是我的类,具有私有数据成员系数、功率和指向下一个节点的指针。LinkedList 是我的主类,它包括一个私有 Node* 头成员和公共运算符重载函数和几个构造函数。这里使用的构造函数是默认构造函数,我只是将 head 设置为 NULL。

我在第二个 while 循环之后放置了一些 cout 语句,并乘以两个多项式来测试我的乘法函数。

所以在这种情况下,我的 main.cpp 文件中有这段代码:

此外, << 重载运算符可以正常工作并正常显示链接列表。问题是当我尝试这样做时:

我得到一个分段错误。我不知道为什么。正如我所说,我将 cout 语句放在第一个 while 循环中,这就是我在执行 poly1 * poly2 时得到的:

是的,它很丑陋,但这是在我将所有这些东西加在一起之前。但无论如何,它基本上是正确的。在评估最后一个常数后,我只是得到一个分段错误。

我不知道它为什么这样做,它只对乘法运算符这样做。其他东西虽然很好。我可能在某个地方有一个错误,过去几个小时我一直在寻找它,但我不知道我做错了什么。有人可以帮忙吗?

谢谢。

我的节点类:

0 投票
7 回答
12438 浏览

java - 迭代地反转单链表

必须是 O(n) 并且就地(空间复杂度为 1)。下面的代码确实有效,但有没有更简单或更好的方法?

0 投票
1 回答
718 浏览

c++ - 分段错误 11 链表

我的班级正在通过实现一个循环单链表来模拟约瑟夫斯问题。我的代码可以编译,但是当它运行时出现分段错误:构建列表后的 11 。到目前为止,我的调试使我意识到错误发生在程序进入主函数的最后一个while循环时。我认为这与我使用 first->next 的方式有关,但我不确定。任何帮助都会很棒,谢谢。如果这不明显,我正在用 C++ 编码。