队列数组的实现

28次观看(过去30天)
ROSHITH塞巴斯蒂安
ROSHITH塞巴斯蒂安 2020年5月6日
评论道: Guillaume 2020年5月9日
由于matlab不支持队列,我使用数组来处理万博1manbetx队列功能。
我必须实现一个队列数组,每个队列都有不同的长度。二维数组在matlab中只支持矩阵,因此万博1manbetx应该是相同的编号。每个队列中的元素,这不是我的要求。
我导入了linkedlist的Java实现,但它不支持结构或类对象。万博1manbetx要添加到队列中的元素是结构或类对象。
我怎样才能以最有效的方式处理这个问题?

接受的答案

约翰D 'Errico
约翰D 'Errico 2020年5月6日
编辑:约翰D 'Errico 2020年5月6日
标准数组必须是矩形的。然而,细胞阵列是完美的解决方案。
C = {1:3, 1:5,1:8}
C =
1×3单元数组
{1×3双}{1×5双}{1×8双}
> > C {:}
ans =
1 2 3
ans =
1 2 3 4 5
ans =
1 2 3 4 5 6 7 8
您可以使用花括号创建和索引它们,例如{}。
C {3}
ans =
1 2 3 4 5 6 7 8
单元格数组可以包含任何内容,包括结构体。
当然,结构的数组也是可能的,而且结构也可以充当任何东西的容器。
6个评论
Guillaume
Guillaume 2020年5月9日
作为对我的回答的补充 你以前的问题 ,我已经写了一个队列的实现,它应该有很好的性能。

登录发表评论。

答案(1)

Guillaume
Guillaume 2020年5月6日
编辑:Guillaume 2020年5月6日
您可能想要咬紧牙关,在matlab中实现自己的队列类,就像我之前建议的那样。
否则,一种可能是在当前代码中添加某种程度的间接。而不是将对象存储在队列中,而是将它们作为值存储在 容器。地图 并在队列中存储相应的键。理想情况下,键应该是对象的散列,但由于matlab没有内置的散列函数 容器。地图 甚至没有说它是否实现为hashmap你可以简单地使用连续递增的整数。所以算法是这样的:
  • 设置:
keycount = 0;
queueelements = containers.Map;
队列= . .%你的队列实现
  • 对对象进行排队。
Keycount = Keycount + 1;
queueelements (keycount) = s;
queue.enqueue (keycount);
  • 退出对象队列。
关键= queue.dequeue;
s = queueelements(关键);
queueelements.remove(关键);
编辑 但是请注意,性能 容器。地图 在matlab中是…不是很好。
1评论
ROSHITH塞巴斯蒂安
ROSHITH塞巴斯蒂安 2020年5月6日
执行已经花费了很多时间,因此我必须检查应该选择哪个选项。谢谢你的信息,我会试试的。

登录发表评论。

标签

s manbetx 845


释放

R2020a

社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!

开始狩猎!