Matlab - структура данных стека - PullRequest
12 голосов
/ 12 ноября 2010

Могу ли я иметь структуру данных стека в Matlab?

Например, стек целых чисел, где я могу вставить в него такие элементы, как stack.push(i), извлечь из него элементы, например i = stack.pop(), и проверить, пусто ли оно stack.isempty().

Ответы [ 5 ]

19 голосов
/ 12 ноября 2010

Я не думаю, что у MATLAB есть такой даже в более новых версиях.Но вы можете использовать Java, это «первоклассный гражданин» в MATLAB, он будет отлично работать с целыми числами по мере необходимости.См. Также очередь и связанный список связанные вопросы.

Просто напишите в MATLAB stack=java.util.Stack(), и тогда вы сможете вызывать методы для него какв вашем вопросе stack.push(i), ecc.

5 голосов
/ 12 ноября 2010

Вы можете свернуть свои собственные или использовать чужие, например this .

Очень простой домашний стек - это массив с числом, которое указывает на самый верхний элемент.

1 голос
/ 25 февраля 2012

Я использовал Java в MATLAB и, честно говоря, он очень медленный. Намного лучше делать то, что сказал @skurmedel, например:

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

И для имитации pop:

A = stack(ptr,1);
B = stack(ptr,2);
Ptr = ptr - 1;
0 голосов
/ 05 июля 2018

Пожалуйста, используйте массивы MATLAB как есть. Они в 100 раз быстрее, чем при использовании любого утилиты Java. Напишите дополнительную логику, чтобы массив работал как стек.

Из личного опыта просто попробуйте переписать свой алгоритм для использования массива MATLAB.

0 голосов
/ 09 апреля 2013

В FileExchange есть полезная информация:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...