当前位置: 首页 > 面试题库 >

链表的“头”是什么?

胡志
2023-03-14
问题内容

我正在使用Java开发链表,因此我试图掌握单个链表的概念。

head -> 12 -> 34 -> 56 -> null

head.next将为12(也与node1相同)。但是,头是什么?

更新: 引用和指针之间有什么区别?

Update2: 因此,如果headis 12head.nextis
34,那么这并不意味着以下函数会跳过第一个节点以查看其是否为空吗?

public void add(Object data, int index)
    // post: inserts the specified element at the specified position in this list.
    {
        Node temp = new Node(data);
        Node current = head;
        // crawl to the requested index or the last element in the list,
        // whichever comes first
        for(int i = 1; i < index && current.getNext() != null; i++)
        {
            current = current.getNext();
        }
        // set the new node's next-node reference to this node's next-node reference
        temp.setNext(current.getNext());
        // now set this node's next-node reference to the new node
        current.setNext(temp);
        listCount++;// increment the number of elements variable
    }

来源:http://www.mycstutorials.com/articles/data_structures/linkedlists


问题答案:

列表的开头是列表的第一个节点。它将为存储该节点引用的变量起一个好名字,如果列表为空,我希望它包含空引用。

someLinkedList.head
         |
         |
         v
        ______        ______        ______            
       |    |n|      |    |n|      |    |n|           
       |    |e|      |    |e|      |    |e|           
       | 12 |x| -->  | 34 |x| -->  | 56 |x| --> null
       |    |t|      |    |t|      |    |t|           
       |____|_|      |____|_|      |____|_|

取决于上下文,尾巴可以指代不同的事物。我惯用的术语是,34 -> 56 -> null在此示例中,尾部与之相对应,也就是说,尾部与之相对应。

在其他上下文中,它可能是对最后一个节点的引用。在这种解释中,尾部将引用56您示例中的节点。

关于您的第一次编辑,这恰好是一个 完全不同的问题

指针是对应于存储器地址的值。引用是引用某个对象的值(或null)。您不能在Java引用上执行指针算术,但否则我会说它们非常相似。

可能会使您感到困惑的是,Java中的变量 永远不能包含对象 。对象始终存在于堆中,并且变量包含原始数据类型或对堆上对象的引用。

关于第二次编辑:

在您提供的示例中,看起来add方法跳过了第一个元素,从某种意义上说,确实如此。这是因为该实现具有“虚拟”元素作为头。查看构造函数中head变量的初始化:

head = new Node(null);

我不明白他们为什么决定这样做。对我来说,这看起来很愚蠢。



 类似资料:
  • 我正在尝试为我的链表类创建一个添加和删除方法。我写了两封信,名字是Head和Tail。 头- 当我试图删除特定节点时,我一直遇到问题,因为Java说我越界了。我想是因为我的头没有指向第一个节点?你们觉得怎么样?还是我完全走错路了...

  • 问题内容: 我需要用Java编写一个将链表中的第一个元素移动到最后位置的方法。 为此,我相信我必须设置一个节点以引用head之后的第一个元素,然后将下一个节点设置为null。我尝试使用我的方法执行此操作,但是在运行该方法时,输出不正确。 我所剩的班级太多了,无法在此处发布,但是我认为我只需要在概念化如何将第一个元素移到列表末尾方面提供帮助。 我写的方法是: 问题答案: 您要删除列表的开头并使其成为

  • 我在一个数据库中有两个表,这两个表都来自最初以电子表格形式提供的官方政府参考表。 下面说明了这两个表的结构。 表1(物种代码) 表2(允许的表示代码) 当我尝试在第一个和第二个之间创建关系时(以便充分利用在第二个表中查找值的能力),当我尝试将speciescodes.FAOC的颂歌链接到alolwestates. Ers物种代码时,会出现以下错误。 “SpeciesCodeLookup”表已成功保

  • 本文向大家介绍请问什么是单向链表,如何判断两个单向链表是否相交相关面试题,主要包含被问及请问什么是单向链表,如何判断两个单向链表是否相交时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 考察点:数据结构,算法 公司:百度 1、单向链表 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始;链表是使用指针进行构造的列表;又称为结点列表,因为链表是

  • 本文向大家介绍什么是区块链?相关面试题,主要包含被问及什么是区块链?时的应答技巧和注意事项,需要的朋友参考一下 区块链是不间断的经济交易数字分类帐,可以进行编程,以记录不仅是金融交易,还可以记录几乎所有有价值的东西。简单来说,它是一个不可变记录的分散式分布式数据库,该数据库由计算机集群管理,但不属于任何单个实体。区块链存储为数据库或平面文件。

  • 问题内容: 另一位程序员提到他们在职业生涯中没有找到在任何专业软件中使用链表数据结构的用例。我想不出什么好例子。他主要是C#和Java开发人员 谁能给出一些例子,说明这是解决特定现实问题的正确数据结构? 问题答案: 真实示例是FIFO队列。一个简单的基于数组的列表对此非常不利,因为您需要在一端添加并在另一端删除,并且这些操作之一将是带有基于数组的列表的O(n)(除非您向使用起始和结束索引),而两者