Могу ли я иметь структуру данных стека в Matlab?
Например, стек целых чисел, где я могу вставить в него такие элементы, как stack.push(i), извлечь из него элементы, например i = stack.pop(), и проверить, пусто ли оно stack.isempty().
stack.push(i)
i = stack.pop()
stack.isempty()
Я не думаю, что у MATLAB есть такой даже в более новых версиях.Но вы можете использовать Java, это «первоклассный гражданин» в MATLAB, он будет отлично работать с целыми числами по мере необходимости.См. Также очередь и связанный список связанные вопросы.
Просто напишите в MATLAB stack=java.util.Stack(), и тогда вы сможете вызывать методы для него какв вашем вопросе stack.push(i), ecc.
stack=java.util.Stack()
Вы можете свернуть свои собственные или использовать чужие, например this .
Очень простой домашний стек - это массив с числом, которое указывает на самый верхний элемент.
Я использовал Java в MATLAB и, честно говоря, он очень медленный. Намного лучше делать то, что сказал @skurmedel, например:
Ptr = 1; Stack(ptr,:) = [x,y]; Ptr = ptr + 1;
И для имитации pop:
pop
A = stack(ptr,1); B = stack(ptr,2); Ptr = ptr - 1;
Пожалуйста, используйте массивы MATLAB как есть. Они в 100 раз быстрее, чем при использовании любого утилиты Java. Напишите дополнительную логику, чтобы массив работал как стек.
Из личного опыта просто попробуйте переписать свой алгоритм для использования массива MATLAB.
В FileExchange есть полезная информация: