队列数组的实现

34个视图(过去30天)
罗希·塞巴斯蒂安
罗希·塞巴斯蒂安 2020年5月6日
评论: 纪尧姆 2020年5月9日
因为matlab不支持队列,所以我使用数组来金宝app处理队列功能。
我必须实现一个队列数组,每个队列的长度不同。matlab中的2D数组只支持矩阵,因此每个队列中的元素数量应该相同,这不是我的要求。金宝app
我导入了linkedlist的Java实现,但它不支持struct或class对象。要添加到队列中的元素是struct或cl金宝appass对象。
我如何以最有效的方式处理这个问题?

公认的答案

约翰·德雷科
约翰·德雷科 2020年5月6日
编辑:约翰·德雷科 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评论
纪尧姆
纪尧姆 2020年5月9日
作为对我的回答的补充 你先前的问题 ,我已经为您编写了一个队列的实现,它应该具有良好的性能。

登录以发表评论。

更多答案(1)

纪尧姆
纪尧姆 2020年5月6日
编辑:纪尧姆 2020年5月6日
您可能想咬紧牙关,按照我之前的建议,在matlab中实现自己的队列类。
否则,一种可能是在当前代码中添加一级间接寻址。不要将对象存储在队列中,而是将它们作为值存储在 集装箱。地图 并将相应的密钥存储在队列中。理想情况下,密钥将是对象的哈希,但由于matlab没有内置的哈希函数,因此 集装箱。地图 甚至没有说如果它被实现为一个hashmap,您可以简单地使用不断增加的整数。所以算法是这样的:
  • 设置:
keycount=0;
queueelements=containers.Map;
队列=。。%您的队列实现
  • 要使对象排队,请执行以下操作:
keycount=keycount+1;
队列元素(keycount)=s;
queue.enqueue(keycount);
  • 要退出对象的队列,请执行以下操作:
key=queue.dequeue;
s=队列元素(键);
队列元素。删除(键);
编辑 然而,请注意 集装箱。地图 在matlab中是。。。不太好。
1评论
罗希·塞巴斯蒂安
罗希·塞巴斯蒂安 2020年5月6日
执行已经花费了很多时间,因此我必须检查应该选择哪个选项。谢谢你的信息,我会试试看。

登录以发表评论。

标签

下载188bet金宝搏


释放

R2020a

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始打猎吧!