34 lines
494 B
Plaintext
34 lines
494 B
Plaintext
class STACK{T} is
|
|
private attr stack :LLIST{T};
|
|
|
|
create:SAME is
|
|
res ::= new;
|
|
res.stack := #LLIST{T};
|
|
return res;
|
|
end;
|
|
|
|
push(elt: T) is
|
|
stack.insert_front(elt);
|
|
end;
|
|
|
|
pop: T is
|
|
if ~stack.is_empty then
|
|
stack.rewind;
|
|
r ::= stack.current;
|
|
stack.delete;
|
|
return r;
|
|
else
|
|
raise "stack empty!\n";
|
|
end;
|
|
end;
|
|
|
|
top: T is
|
|
stack.rewind;
|
|
return stack.current;
|
|
end;
|
|
|
|
is_empty: BOOL is
|
|
return stack.is_empty;
|
|
end;
|
|
end;
|