我开始用java学习数据结构和算法。
我从列表开始,我学习的第一个概念是数组和列表之间的区别。
现在在列表中我学习如何插入和元素列表和显示在屏幕上。我得到了两段代码,第一段我很了解;第二个令人困惑的地方。
我的困惑是Node在这里是什么?一开始我们取消df.plot()
所以基本上这就是Node。
是预定义的数据类型还是某种东西。任何人都可以解释第二个程序是如何流动的。虽然我是编程新手所以想知道第二个程序与第一个程序有什么不同。和有什么区别。
我也明白我们在这里使用util但仍然想知道因为人们如何在工业中使用。
第一种方法:
Node head;
第二种方法:
import java.util.*;
public class TestCollection7{
public static void main(String args[]){
LinkedList<String> al=new LinkedList<String>();
al.add("Ravi");
al.add("Vijay");
al.add("Ravi");
al.add("Ajay");
Iterator<String> itr=al.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}
答案 0 :(得分:3)
Node
是嵌套在LIstTEst
内的类。
你有它的定义:
static class Node {
int data;
Node next;
Node(int d) {
data = d;
next = null;
}
}
它表示链接列表中的链接。它包含一个数值(data
)和对列表中下一个Node
的引用。
Node head;
是LIstTEst
的成员,它引用列表中的第一个链接。
请注意,缺少LIstTEst
的已发布实施。它应该使用add
方法而不是main
创建Node
并直接操作链接。
答案 1 :(得分:2)
那
public class LIstTEst
只是第一个迈向自我实施列表的步骤。而您的第一个源代码使用链接列表实现作为&#34;标准的一部分&#34; Java集合类。
A&#34;链接列表&#34; (通用术语)只不过是一个连接东西(相同类型)的列表。那些&#34; thingies&#34;用内部Node
类表示。
因此,真正的答案是:避免混淆概念和实现。为了理解Java如何处理链接列表&#34 ;;你应该先退后一步,了解概念&#34;链表&#34;本身。例如,通过阅读其wikipedia条目:
在计算机科学中,链表是数据元素的线性集合,称为节点,每个数据元素通过指针指向下一个节点。它是由一组节点组成的数据结构,这些节点一起表示序列。在最简单的形式下,每个节点由数据和到序列中下一个节点的引用(换句话说,链接)组成。该结构允许在迭代期间从序列中的任何位置有效地插入或移除元素。更复杂的变体添加了额外的链接,允许有效插入或从任意元素引用中删除。
换句话说:编程语言是关于实现给定语言的通用算法和数据结构。因此,我们建议您通过了解这些常见概念来开始您的研究。
除此之外:你可能会发现第二个例子令人困惑的原因:
答案 2 :(得分:0)
第一个例子
LinkedList是java中链表数据结构的一种实现。
第二个例子
它是手动编写的相同数据结构的实现。 Node是您的类,它描述了此链表中的一个单元格。
两种实现都不一样。 Java的实现提供了许多方便的方法来处理列表,而不是。您可以从实现add
方法开始。
// appends the specified element to the end of this list.
public void add(int data) {
// create Node only in case of first element
if (head == null) {
head = new Node(data);
}
Node temp = new Node(data);
Node current = head;
// check if there is first element
if (current != null) {
// starting at the head node, iterate to the end of the list and then add element after last node
while (current.getNext() != null) {
current = current.getNext();
}
// the last node's "next" reference set to our new node
current.setNext(temp);
}
}
什么是链表?
长话短说:链表是一系列细胞。每个小区都知道下一个小区。最后一个小区知道没有下一个小区。链接列表类(操纵那些单元(节点))包含第一个节点的引用。
请看这个互动演示:https://visualgo.net/list
答案 3 :(得分:0)
public class LIstTEst { 节点头; // ==&gt;声明一个类级变量。
static class Node { // create a static class
int data; // integer data type variable.
Node next; // Class refrernce.
Node(int d) { // create a constructor.
data = d; // holding the current value.
next = null;
}
}
public void PrintList() {
Node n = head;
while (n != null) {
System.out.print(n.data + " ");
n = n.next;
}
}
public static void main(String args[]) {
LIstTEst llist = new LIstTEst(); // creating a object of the mentioned
// class.
llist.head = new Node(1); // creating the Node class object by Class
// level refrence.
Node second = new Node(2); // As this is static class, inside one class,
// so we created directly to object of Node
// class by passing the parameter to the
// constructor.
Node third = new Node(7);
llist.head.next = second; // just transfering the current reference to
// next level reference before that
// constructor is making null for each
// executions.
llist.head.next = third;
llist.PrintList(); // Finally for printing purpose it is calling.
}
}