在Java中,我被要求将整数值存储在一个单向链表中,然后打印存储在该列表中的元素。这是我想出来的:
int max = 10;
List<Integer> list = new ArrayList<Integer>();
for (int num = 0; i < max; i++){
list.add(num);
}
System.out.print(list);
我想知道,ArrayList和单链表是一回事吗?我想确保我正确地回答了这个问题。这有意义吗?谢谢!
所以我有下面的单链表类: class ListNode:
def __init__(self, x):
self.val = x
self.next = None 现在我从一个数组-10,-3,0,5,9创建一个链表 input = [-10,-3,0,5,9]
head = ListNode(input[0])
for idx, x in enumerate(input[1:]):
if idx == 0:
head.next = ListNode(x)
temp = head.next
else:
根据定义,链表是一个列表,它的每个元素都指向下一个元素(如果我们谈论的是双向链表,也可以是前一个元素) 。
然而,在Java语言中,LinkedList实现了List、Queue、Deque等等。
在LinkedList中找不到提供列表中下一个或上一个对象的方法,最好的方法是获取迭代器和对象。我的问题是,为什么Java将这种数据结构称为LinkedList,而它并不是真正的链表?链表可以在Java中实现,如下所示:
Public class MyLinkedList{
public int value;
public MyLinkedList next;
}
我正在做的是连接动态生成的链表,一次只有2个。如何在恒定时间复杂度O(1)的Kotlin或Java中做到这一点? This similar question in Java告诉我,java.util.LinkedList不支持添加常量时间。Google Guava Iterators.concat在一次调用中只能组合2个或更多迭代器,这会导致多层包装,并在我的例子中迭代时增加复杂性。
下面是实现链表的代码,我希望你能理解这段代码的主要目的,这样的代码是用java写的,我正在尝试用c++实现。
#include <iostream>
using namespace std;
class link {
public:
int idata;
double ddata;
link ( int id,double dd){
idata=id;
ddata=dd;
}
public :
void display(){
cout<<idata<<"=>