Can I have a stack data structure in matlab?
For example a stack of integers where I can push elements in it like stack.push(i)
, get elements out of it like i = stack.pop()
and check out if it is empty stack.isempty()
.
Can I have a stack data structure in matlab?
For example a stack of integers where I can push elements in it like stack.push(i)
, get elements out of it like i = stack.pop()
and check out if it is empty stack.isempty()
.
I do not think MATLAB has one even in the newer versions. But you can use Java, it is a "first class citizen" in MATLAB, it would work perfectly with integers as you need it. See also queue and linked-list related questions.
Just write in MATLAB stack=java.util.Stack()
and then you can call methods on it as in your question stack.push(i)
, ecc.
I have used the Java one in MATLAB and honestly it is very slow. It's much better to do what @skurmedel said, like so:
Ptr = 1;
Stack(ptr,:) = [x,y];
Ptr = ptr + 1;
And to simulate pop
:
A = stack(ptr,1);
B = stack(ptr,2);
Ptr = ptr - 1;
Please use MATLAB arrays as is. They are 100 times faster than using any java util. Write the extra logic to make the array work like a stack.
From personal experience just try to re-write your algorithm to use MATLAB array.