- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是几个java数据数据结构练习。
这是我目前正在做的练习
Add an array-linked hierarchy to the overall structure. Use the following names:
AbstractNodeArrayMyList
,NodeArraySorted
, andNodeArrayUnsorted
我已经实现了抽象数组列表、排序数组列表、未排序数组列表、抽象链表、排序链表和未排序链表。
但是我对这个数组链接结构或节点数组是什么感到困惑。
我尝试做 google search对于数组链表或结构,但我得到的只是导致数组和链表之间存在差异的搜索。谁能澄清或确认我对这个节点数组或数组链接结构实际上是什么的初步看法?
当我想到节点时,我会想到链表中的节点,包含数据的东西,以及对其所连接的节点的引用,例如来自these lecture notes for ListNode.java
public class ListNode {
int data;
ListNode next;
public ListNode() {
this(0, null);
}
public ListNode(int data) {
this(data, null);
}
public ListNode(int data, ListNode next) {
this.data = data;
this.next = next;
}
}
当我想到数组时。我想到了支持随机访问的东西,就像你可以访问数组中的任何元素,并且需要恒定的时间。那么节点数组看起来像这样吗? (您将 ListNode 定义为私有(private)内部类)并且外部类看起来像
public class NodeArray {
private ListNode[] elementData;
...
private class ListNode {
....
}
}
我不认为我最初的想法是正确的,因为通用数组列表的整个想法是它可以处理任何类型的数据。那么为什么要为 ArrayNode 提供一个特殊的类呢?
最佳答案
链接列表可以是基于数组的,也可以是基于指针的。如果您学过 C++,您可能熟悉指针。它们也存在于 Java 中,但它们是由 java 编译器在幕后控制的,因此您不必显式引用它们。如果您将这些结构视为数组与链表,您可能会感到困惑。您确实应该考虑数组与指针。我知道您在 java 中问过这个问题,但由于您没有在 java 中显式使用指针,因此查看 C++ 中的示例可能更有意义。
假设您有一个列表类,ArrayList 和 PointerList。 ArrayList 可能设置如下:
class ArrayClass
{
public:
// Default constructor
ArrayClass();
// Returns the next item in the list using currentPos
// If the end of the list is reached,
// currentPos is reset to begin again.
ItemType getNextItem();
//other methods
private:
int length; // Number of items
ItemType info[MAX_ITEMS]; // Array of items
int currentPos; // List iterator
};
使用基于数组的链表实现 getNextItem() 看起来像这样:
ItemType ArrayList::getNextItem()
{
currentPos++;
return info[currentPos];
}
通过此实现,该方法返回存储在 currentPos 指向的索引处的对象的副本。索引号本身 (currentPos) 永远不会向调用它的代码透露,并且由于返回的对象是存储对象的副本,因此对副本所做的任何更改都不会自动对存储版本进行。要存储对象的更新版本,用户必须删除 info[currentPos] 处存储的对象,然后在其位置添加新版本。希望这是有道理的。
现在让我们看看PointerList。它可以这样定义:
class PointerList
{
public:
// Default constructor :
PointerList();
// Returns the next item in the list using currentPos
// If the end of the list is reached,
// currentPos is reset to begin again.
ItemType getNextItem();
//other methods
private:
int length; // Number of nodes on list
NodeType* listData; // List head ptr
NodeType* currentPos; // List iterator
};
基于指针的 getNextItem() 的实现可能如下所示:
ItemType PointerArray::getNextItem()
{
ItemType item;
if (currentPos == NULL)
{
currentPos = listData;
}
else
{
currentPos = currentPos->next;
}
item = currentPos->info;
return item;
}
此实现将返回链表中项目的地址。使用指针将通过引用返回对象,而使用数组将通过值返回对象。在此实现中对对象所做的任何更改都将立即对存储的对象进行,因为调用此方法的代码可以直接访问存储的对象。
在上面的两个示例中,不必担心 ItemType 和 NodeType。这些不是 C++ 中的特殊数据类型。它们可以很容易地是 Foo 或 Car 等。此外,它们都可以引用相同的数据类型。
我希望这是有道理的。如果您还有其他问题,请告诉我。
关于java - 什么是数组链接结构或节点数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28031936/
我有一个网站,并且我使用 javascript sdk 添加了“点赞”按钮。 这是代码 (function(d, s, id) { var js, fjs = d.g
我知道 HTML 是逐行读取的。当您链接多个 css 文件(如规范化文件和样式表文件)时,由于 CSS 重要性特异性和源顺序,样式表文件应链接在规范化文件之后。看起来这不会影响链接的 JavaScri
我正在使用官方 Bootstrap site 提供的 CDN 链接在我的网络应用程序中使用面板进行测试 在彻底检查我的代码后,面板没有显示。 但是我在 SO 上看到了类似的帖子并且 CDN 链接不同
这里是编码初学者。我正在尝试为我的移动设备网站设置断点,以便我的网站适合小屏幕。我只是想检查如果我缩小视口(viewport)的宽度,背景颜色是否会改变,但没有发生任何变化。也许我只是对一个简单的错误
举一个我想要的例子,想象一下这个字符串: $text = 'lorem ipsum About us lorem ipsum'; 如果此字符串包含一个 href 以 / 开头的 anchor 链接,则
如何链接到 LaTeX 文档的另一部分或子部分?这种链接的常规范式是什么,像[链接名称]那样写,或者像网页超链接那样写? 最佳答案 链接到另一个部分需要您的部分进行一些额外的标记。要使用的命令是: \
我有一个订单表,其中包含订单号、客户 ID 和代理 ID。然后有一个带有 id 的客户表和一个带有 id 的代理表。 我需要获取所有具有来自代理 ID 'a03' 和代理 ID 'a05' 的订单的客
假设我有: dic = {"z":"zv", "a":"av"} ## Why doesn't the following return a sorted list of keys? keys = d
我在尝试链接到外部库时得到了一些奇怪的结果。如果我从命令行运行以下命令: gcc fftwTest.c -I../extlib/fftw-3.3.5-dll32 -L../extlib/fftw-3.
我认为我没有正确理解 jQuery 链接。我正在遍历一个数组并尝试将 div 元素添加到我的包装器 CSS 类中,每个 div 元素都有一个“click”类和自定义 css top 和 left 属性
HTML 使用超级链接与网络上的另一个文档相连。几乎可以在所有的网页中找到链接。点击链接可以从一张页面跳转到另一张页面。 HTML 超链接(链接) HTML使用标签 a 来设置超文本链接。 超链
这个问题在这里已经有了答案: How do I link to part of a page? (hash?) (7 个答案) Scroll Automatically to the Bottom
我想创建一个 Docker Swarm 集群,运行一个 Elasticsearch 实例、一个 MongoDB 实例和一个 grails 应用程序,每个都在单独的机器上。我正在使用 Docker Ma
我正在尝试将 CakePHP HTML Linker 用于以下代码 Add Cuisine 由于 span 标签需要在 a 标签内。我无法根据需要获得输出。关于如何完成它的任何建议? 最佳答案 禁用链
大家好, 我最近开发了一个应用程序,很快就会提交到 App Store。我想免费提交这个应用程序,并想知道我是否可以实现一个带有 PayPal 捐赠标志的按钮,上面基本上写着“捐赠用于开发”或与此相关
我想尝试在 dlang 中使用 libuv。我下载了这样的 dlang 绑定(bind): git clone git@github.com:tamediadigital/libuv.git 现在我接
我有一个节点(节点 a),各种其他节点(节点 b/c/d/e)与之引用。 我可以创建一个带有参数的 View 作为我正在查看的节点(节点 a),并获取引用该节点的节点列表。 基本上在节点 a 查看节点
我正在尝试建立一个常见问题页面,上面有目录,下面有答案。我想点击目录中的一个问题,并在同一页面上链接到相应的答案。我如何在 CakePHP 中使用 $this->Html->link() 执行此操作方
在 WooCommerce 3.0+ 中,我使用 js 创建了一些选项卡,每个选项卡中包含来自不同类别的产品。我已经设法修改了简单产品的添加到购物车链接,其中点击了 addtocart 按钮它进入下一
Delphi 2007/2009 奇怪的问题在这里: 根据设计时定义的组件属性,是否可以在链接中包含文件或保留文件? 示例:如果我将 SomeProperty 保留为真,则在编译时,单元 SomeUn
我是一名优秀的程序员,十分优秀!