用于连续添加和廉价删除的数据结构

时间:2015-03-28 11:04:59

标签: java qt data-structures parallel-processing gnuplot

我正在阅读blog post关于使用Gnuplot和Cairo -terminal制作动画的方法,这个算法只是

  • 将png-images保存到工作目录,
  • 将最新视频保存到工作目录。

我想要更多的东西,用户也可以在转换图像时实时浏览图像:

数据并行模型 - 定期排列在数组中的数据结构

  • 为用户提供一些用户可以通过箭头按钮浏览的界面中的列表
  • 在此界面中,新图像被添加到列表的末尾
  • 用户还可以实时从流中删除不良图像

可以在并行编程的数据并行模型中很好地工作,即在阵列中有规律地构造的数据集。 操作(添加,删除)可以对此数据进行操作,但可以独立于不同的进程。

让我们假设在版本1中不需要有效搜索简单性。 但是,如果你有一个可以做到这一点的模型,我很乐意考虑它 - 让我们称之为第2版。

我认为列表在这里不是一个好的数据结构,因为删除所需的机会以及在数据结构末尾的连续简单添加。 由于删除,数据结构堆栈无法正常工作。 我认为某种 tree 数据结构可以工作,因为它有相当便宜的删除和便宜的搜索。 但是,数据并行模型中的简单数组就足够了。

语言

我认为Java是一个很好的选择因为并行性。 但是,任何语言和伪代码都是好的。

前端

我有一种直觉,即前端对此类系统的要求应该是qT作为终端仿真器。

对于廉价删除和最终连续添加的更好的数据结构是什么?

1 个答案:

答案 0 :(得分:1)

Java LinkedList似乎是你可以用于版本1的东西。你可以使用它的单个参数add()以恒定时间附加到列表中。如果通过"实时"你的意思是当图像在用户的显示器中并因此以某种方式指向时,也可以在恒定的时间内删除它们。 最佳使用内存,而不是像Arraylist一样重新实例化。 在对象上实现的任何双向链表(与数组相对)都可以。

你的第二个版本不够清楚。