【问题标题】:Matlab - Stack Data StructureMatlab - 堆栈数据结构
【发布时间】:2010-11-12 10:57:51
【问题描述】:

matlab中可以有栈数据结构吗?

例如一堆整数,我可以像stack.push(i)那样将元素推入其中,像i = stack.pop()那样从中取出元素并检查它是否为空stack.isempty()

【问题讨论】:

标签: matlab


【解决方案1】:

我认为 MATLAB 即使在较新的版本中也没有。但是您可以使用 Java,它是 MATLAB 中的“一等公民”,它可以根据需要与整数完美配合。另请参阅queuelinked-list 相关问题。

只需在 MATLAB 中写入 stack=java.util.Stack(),然后您就可以在 call methods on it 中写上您的问题 stack.push(i),ecc。

【讨论】:

  • 数据类型转换要非常小心。
  • @Andrey 这让我有点吃惊——我将一个行向量推入堆栈,当我弹出它时,它以列向量的形式出现。
【解决方案2】:

您可以自己滚动,也可以使用其他人的,例如 this

一个非常简单的自制堆栈将是一个带有计数的数组,该计数指向最顶层的项目。

【讨论】:

    【解决方案3】:

    我在 MATLAB 中使用过 Java,老实说它非常慢。最好按照@skurmedel 所说的去做,就像这样:

    Ptr = 1;
    Stack(ptr,:) = [x,y];
    Ptr = ptr + 1;
    

    并模拟pop

    A = stack(ptr,1);
    B = stack(ptr,2);
    Ptr = ptr - 1;
    

    【讨论】:

      【解决方案4】:

      FileExchange 中有一个有用的提交:

      【讨论】:

        【解决方案5】:

        请按原样使用 MATLAB 数组。它们比使用任何 java util 快 100 倍。编写额外的逻辑,使数组像堆栈一样工作。

        根据个人经验,尝试重写您的算法以使用 MATLAB 数组。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-05-29
          • 2018-06-02
          • 2020-07-08
          • 2023-03-22
          • 2018-04-27
          • 2015-10-21
          • 2021-10-02
          • 1970-01-01
          相关资源
          最近更新 更多