15

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().

1

5 Answers 5

19

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.

Sign up to request clarification or add additional context in comments.

2 Comments

Just be very careful with data type conversions.
@Andrey This just bit me - I pushed a row vector to a stack and when I popped it, it came out as a column vector.
5

You can roll your own or you can use someone else's, like this.

A very simple homemade stack would be an array with a count, the count pointing to the topmost item.

Comments

1

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;

Comments

0

There is a useful submission in FileExchange:

Comments

0

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.