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