- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我学习了数据结构和链表,但我不明白一些东西。一个对象怎么能存储这么多地址和数据。当我了解对象时,我发现如果要为单个变量存储许多数据,则需要创建新对象,但现在在链接列表中,newNode对象将存储data1,next1,data2,next2,.... datan,nextn。
当程序运行list.insert(11)时,数据变为11,为什么旧数据5没有被删除?
抱歉我的英语语法,任何反馈都将不胜感激。谢谢!
以下代码是关于在链表中插入节点的代码:
节点类:
public class Node {
int data;
Node next;
public int getData() {
return data;
}
public Node getNext() {
return next;
}
public void setData(int data) {
this.data = data;
}
public void setNext(Node next) {
this.next = next;
}
}
MyLinkedList 类:
public class MyLinkedList {
Node head;
public void insert(int data) {
Node newNode = new Node();
newNode.setData(data);
newNode.setNext(null);
if (head == null) {
head = newNode;
}
else {
Node n = head;
while(n.getNext() != null) {
n = n.getNext();
}
n.setNext(newNode);
}
}
public void show() {
Node newNode = head;
while (newNode.getNext() != null) {
System.out.println(newNode.getData());
newNode = newNode.getNext();
}
System.out.println(newNode.getData());
}
}
运行者类别:
public class Runner {
public static void main(String args[]) {
MyLinkedList list = new MyLinkedList();
list.insert(5);
list.insert(11);
list.insert(9);
list.insert(3);
list.show();
}
}
最佳答案
链表本身几乎对其所包含的数据一无所知。它通常只保存总大小的变量和对第一个节点的引用,即头(以及双向链表中的尾部)。
节点是一个自己的对象,它包含一个数据变量和对下一个节点的引用,后者也是一个自己的对象,依此类推。 (双向链表中的节点也有指向前一个节点的指针)
因此,为了访问第五个节点,您需要从头部开始,并跟随下一个指针到达第五个节点。链表中没有直接访问。但是,它允许通过重新排列节点的下一个指针(例如跳过节点)来轻松插入或删除元素。
另请注意,一个对象可以容纳的数据量没有限制。您完全可以将所有数据同时保存在一个对象中。此外,对象的变量只是对实际数据存储位置的引用。所以它不需要在内存中彼此相邻,它可以分散在各处。
相反,数组的所有数据都连接在内存中。这就是直接访问对于数组效果很好的原因。您拥有数组开始的基地址,知道元素的字节大小,并且可以通过它轻松计算出哪个元素开始在内存数据中的位置:
// Memory address of fifth element of an int[] array
base + 4 * sizeof(int)
这也是它们需要固定大小的原因。
关于java - 链接列表 - 单个对象如何依次存储如此多的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48974114/
我的一位教授给了我们一些考试练习题,其中一个问题类似于下面(伪代码): a.setColor(blue); b.setColor(red); a = b; b.setColor(purple); b
我似乎经常使用这个测试 if( object && object !== "null" && object !== "undefined" ){ doSomething(); } 在对象上,我
C# Object/object 是值类型还是引用类型? 我检查过它们可以保留引用,但是这个引用不能用于更改对象。 using System; class MyClass { public s
我在通过 AJAX 发送 json 时遇到问题。 var data = [{"name": "Will", "surname": "Smith", "age": "40"},{"name": "Wil
当我尝试访问我的 View 中的对象 {{result}} 时(我从 Express js 服务器发送该对象),它只显示 [object][object]有谁知道如何获取 JSON 格式的值吗? 这是
我有不同类型的数据(可能是字符串、整数......)。这是一个简单的例子: public static void main(String[] args) { before("one"); }
嗨,我是 json 和 javascript 的新手。 我在这个网站找到了使用json数据作为表格的方法。 我很好奇为什么当我尝试使用 json 数据作为表时,我得到 [Object,Object]
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我听别人说 null == object 比 object == null check 例如: void m1(Object obj ) { if(null == obj) // Is thi
Match 对象 提供了对正则表达式匹配的只读属性的访问。 说明 Match 对象只能通过 RegExp 对象的 Execute 方法来创建,该方法实际上返回了 Match 对象的集合。所有的
Class 对象 使用 Class 语句创建的对象。提供了对类的各种事件的访问。 说明 不允许显式地将一个变量声明为 Class 类型。在 VBScript 的上下文中,“类对象”一词指的是用
Folder 对象 提供对文件夹所有属性的访问。 说明 以下代码举例说明如何获得 Folder 对象并查看它的属性: Function ShowDateCreated(f
File 对象 提供对文件的所有属性的访问。 说明 以下代码举例说明如何获得一个 File 对象并查看它的属性: Function ShowDateCreated(fil
Drive 对象 提供对磁盘驱动器或网络共享的属性的访问。 说明 以下代码举例说明如何使用 Drive 对象访问驱动器的属性: Function ShowFreeSpac
FileSystemObject 对象 提供对计算机文件系统的访问。 说明 以下代码举例说明如何使用 FileSystemObject 对象返回一个 TextStream 对象,此对象可以被读
我是 javascript OOP 的新手,我认为这是一个相对基本的问题,但我无法通过搜索网络找到任何帮助。我是否遗漏了什么,或者我只是以错误的方式解决了这个问题? 这是我的示例代码: functio
我可以很容易地创造出很多不同的对象。例如像这样: var myObject = { myFunction: function () { return ""; } };
function Person(fname, lname) { this.fname = fname, this.lname = lname, this.getName = function()
任何人都可以向我解释为什么下面的代码给出 (object, Object) 吗? (console.log(dope) 给出了它应该的内容,但在 JSON.stringify 和 JSON.parse
我正在尝试完成散点图 exercise来自免费代码营。然而,我现在只自己学习了 d3 几个小时,在遵循 lynda.com 的教程后,我一直在尝试确定如何在工具提示中显示特定数据。 This code
我是一名优秀的程序员,十分优秀!