23得票8回答
为什么在单向链表中删除操作的时间复杂度为O(1)?

我不太明白为什么单向链表在末尾删除时可以在O(1)时间内完成,正如维基百科文章所说。 一个单向链表由节点组成。每个节点包含某种数据和对下一个节点的引用。连接列表中最后一个节点的引用为null。-------------- -------------- --------...

31得票13回答
在C#中反转单链表

我正在尝试反转一个链表。这是我想到的代码: public static void Reverse(ref Node root) { Node tmp = root; Node nroot = null; Node prev = null; w...

9得票4回答
在C语言中优雅地实现循环单向链表?

正在学习经典的数据结构,目前关注在链表上。刚刚实现了一个循环单向链表,但我有一种强烈的感觉,这个链表可以用更优美的方式来表达,特别是remove_node函数。 请注意效率和代码可读性,有没有人能提供一个更简洁、更高效的单向循环链表解决方案呢? #include <stdio.h&gt...

50得票5回答
Java - 返回一个值会打破循环吗?

我正在编写一些代码,基本上遵循以下格式:public static boolean isIncluded(E element) { Node<E> c = head; while (c != null) { if (cursor.getElement...

33得票26回答
Java反转单向链表

有人能告诉我为什么我的代码不起作用吗?我想在Java中反转一个单向链表:这是该方法(不正确工作的方法):public void reverseList(){ Node before = null; Node tmp = head; Node next = tmp.nex...

22得票6回答
我不明白为什么这个函数“从列表返回指针”。

我正在阅读的书,《使用链表介绍数据结构》(第21章演示文稿),其中有两个链表示例。下面是第一个示例:EnemySpaceShip* getNewEnemy () { EnemySpaceShip* p_ship = new EnemySpaceShip; p_ship->...

88得票27回答
面试问题:如何在不创建新节点的情况下合并两个已排序的单链表。

这是一道面试笔试中提出的编程问题。 已有两个单向链表,它们已经有序,你需要将它们合并,并返回新链表的头节点,而且不能创建任何额外的节点。返回的链表也应该是有序的。 方法签名如下: Node MergeLists(Node list1, Node list2); Node类如下:...

31得票2回答
Python中是否有预定义的链表库?

我知道在C++中已经存在了这个功能 #include <list> 现在我很好奇Python是否也有这个功能。

7得票3回答
单次遍历中链表的中间节点?

我试图找出单向链表中循环开始的节点。 我的想法是使用两个指针*slow,*fast,一个以另一个两倍的速度移动。 如果链表有循环,则在某一点 5-6-7-8 | | 1-2-3-4-7-7 慢=快 是否有另一种优雅的解决方案,以便只遍历列表一次?

7得票3回答
为什么比较两个装箱了相同整数值的对象类型变量时,使用 == 无法正常工作?

在尝试用C#实现一个简单的单向链表时,我注意到用一个int值装箱的两个对象类型变量比较时,==不起作用,但.Equals可以。 想要查明原因。 下面的代码片段是一个泛型对象类型Data属性。 public class Node { /// <summary> ...