diff --git a/@stack/length.m b/@stack/length.m new file mode 100644 index 0000000000000000000000000000000000000000..0aa286ee965f8b5074374f64f1e0997bf21731bc --- /dev/null +++ b/@stack/length.m @@ -0,0 +1,9 @@ + function length = length(self) + length = 0; + node = self.stack_pointer; + while ~isempty(node) + length = length + 1; + node = next(node); + end + end + diff --git a/@stack/pop.m b/@stack/pop.m new file mode 100644 index 0000000000000000000000000000000000000000..9b647c1c7b9641e815467663162d56be779dc3a5 --- /dev/null +++ b/@stack/pop.m @@ -0,0 +1,14 @@ +function element = pop(self) +%increase the stack pointer and return 'top' node data +% usage : +% element = pop(stack) + +% $Id$ + +if isempty(self.stack_pointer) + element = {}; +else + element = data(self.stack_pointer); + self.stack_pointer = next(self.stack_pointer); +end + diff --git a/@stack/push.m b/@stack/push.m new file mode 100644 index 0000000000000000000000000000000000000000..71770325dabc4f249293e2c05e47a3191698cca7 --- /dev/null +++ b/@stack/push.m @@ -0,0 +1,4 @@ + function self = push(self, element) + self.stack_pointer = node(element, self.stack_pointer); + end + diff --git a/@stack/stack.m b/@stack/stack.m new file mode 100644 index 0000000000000000000000000000000000000000..0c46a3374798dc6d6326a989f91c9aae573d9aae --- /dev/null +++ b/@stack/stack.m @@ -0,0 +1,29 @@ +function s = stack +%STACK constructor for stack object +% stack is a data structure based on the principle of +% Last In First Out (LIFO) +% +% usage: +% q = stack - Default constructor, empty stack table +% +% example: +% q = stack +% q = push(q, [1:2]) +% q = push(q, ones(1,5)) +% element = pop(q) +% q = push(q, zeros(1,3)) +% etc ... +% +% $Id$ + +% copy constructor +% ---------------- +if nargin == 0 + self.stack_pointer = {}; +else + error('stack:stack', 'Invalid arguments.'); +end + +% class constructor +% ----------------- +s = class(self,'stack'); diff --git a/@stack/top.m b/@stack/top.m new file mode 100644 index 0000000000000000000000000000000000000000..3927b5b0d8e048504cbc1983db2300ce1ddc92d5 --- /dev/null +++ b/@stack/top.m @@ -0,0 +1,17 @@ + function element = top(self) +%return 'top' node +% usage +% data = top(stack) + +% $Id: get.m 416 2009-02-13 07:55:41Z jgrelet $ + +% return object prepared in data +% ------------------------------ + + if isempty(self.stack_pointer) + element = {}; + else + element = data(self.stack_pointer); + end + end +