因此,我的问题首先是,是否有可能在Java中创建一系列链接列表?
了解我为什么要问这个问题。我正在做一个项目,在这个项目中,我们得到了一个方阵文件。我们必须找到矩阵的行列式,但它们必须存储在一个链式结构中。我们以前使用数组做过同样的事情,所以我可以从数组中重用相当多的源代码。下面是我想要做的事情(主要是基于我以前的项目):
因此,这两个明星的步骤是那些我有一个困难的时间弄清楚。我想一次读取所有的矩阵,这样我就不会忘记我在文件中的位置,就像我在一个矩阵中读取行列式一样,然后返回到文件中得到另一个矩阵。但是,我不知道如何存储每个链表表示,这样我就可以迭代地处理每个链表。我唯一的想法是将每个矩阵读入链表结构中,并在可能的情况下将每个链表结构存储在数组中。如果不可能,什么是可能的替代办法?
发布于 2012-07-29 20:45:53
存储LinkedLists数组是完全可能的;数组可以应用于对象以及原始类型。然而,我建议创建一个矩阵类,因为方阵不是链表;它们有两个维度的数据,而不仅仅是一个。至少,您可以使用一个二维的浮点数数组来表示一个矩阵,并存储一个双倍的LinkedList。表示越接近实际对象,对您来说就越容易。
发布于 2012-07-29 21:13:28
如果允许您使用java已经拥有的标准LinkedList类,这里是读取和存储矩阵的可能实现:
int size = 10; //width and height of your matrix.
LinkedList<LinkedList<Integer>> matrix = new LinkedList<LinkedList<Integer>>();
for (int i = 0; i<size; i++)
{
LinkedList<Integer> list = new LinkedList<Integer>();
for (int j = 0; j < size; j++)
{
//read the actual item
}
matrix.add(list);
}
为了读取矩阵(可能是数字),我建议使用名为Scanner的类。您可以创建一个新的扫描器,什么将能够读取您的文件,按数字:
Scanner sc = new Scanner(new File("input.txt"));
您可以使用它读取整数值,而不需要像这样进行任何转换:
int x = sc.nextInt();
发布于 2012-07-29 22:08:11
您可以通过声明LinkedList[]在Java中创建一个链接列表数组,但如果这样做,您的性能将受到严重影响。再看一下矩阵乘法,就可以说明原因。
如果A和B是A列计数等于B行计数的矩阵,则A* Br,c是A中r行和B列c的点积,这意味着我们必须从矩阵中提取行和列。
如果我们从列表(任何类型)形成矩阵,我们可以按行存储它们(即第0列表表示行0),或者按列存储(第0列表表示列0)。
现在我们遇到了一个问题。在链接列表中,方法get(n)从列表的开头开始,并找到下一个成员n次--这使得它按n次顺序运行。由链接列表构建的矩阵要么提取列的速度非常慢(如果按行方向存储),要么很慢地提取行(如果按列方向存储)。
我建议通过使用数组来保持简单。您可以使用
int值=新的intn;
当然,必须定义'n‘值。
希望这能帮上忙。
https://stackoverflow.com/questions/11712778
复制相似问题