2010-11-12 21 views
11

¿Puedo tener una estructura de datos de pila en matlab? Por ejemplo, una pila de enteros donde puedo insertar elementos como stack.push(i), obtener elementos como i = stack.pop() y verificar si está vacío stack.isempty()Matlab - Estructura de datos de pila

+0

MATLAB tiene capacidades OOP "completas". Solo escribe tu clase de pila. Consulte la documentación de MATLAB OOP: http://www.mathworks.com/help/techdoc/matlab_oop/ug_intropage.html – zellus

Respuesta

18

No creo que MATLAB tenga una incluso en las versiones más nuevas. Pero puedes usar Java, es un "ciudadano de primera clase" en MATLAB, funcionaría perfectamente con enteros cuando lo necesites. Ver también queue y linked-list preguntas relacionadas.

Simplemente escriba en MATLAB stack=java.util.Stack() y luego puede call methods on it como en su pregunta stack.push(i), ecc.

+2

Solo tenga mucho cuidado con las conversiones de tipos de datos. –

+3

@Andrey Esto me mordió: empujé un vector de fila a una pila y cuando lo saqué, salió como un vector de columna. –

5

Puede rodar el suyo o puede usar el de otra persona, como this.

Una pila casera muy simple sería una matriz con un recuento, el recuento que apunta al elemento superior.

+0

¿Pero no tiene matlab uno que pueda usar? – Simon

+1

Jack, no pude encontrar ninguno. – Skurmedel

+0

@Jack - Aparte de java, no. – Marc

1

He usado Java en MATLAB y, sinceramente, es muy lento. Es mucho mejor hacer lo @skurmedel dijo, así:

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

Y para simular pop:

A = stack(ptr,1); 
B = stack(ptr,2); 
Ptr = ptr - 1; 
Cuestiones relacionadas