lDefine a stack to be a list_position.
lA client who is looking for reusable components would see the specifications for a list position and choose it to act
as the basis for creating the
type stack.
lTo Push an entry, say E, call S.Reset, followed by S.Insert(E), where S has been declared to be a stack,.
lA Pop is achieved by first doing a Reset and then a Remove.
lTo check whether the stack is empty, one can do a Reset and then call Length_of_Rem.
lWhat is equally important is that now a client of the stack will not need
to know anything about
lists or pointers, because the client will simply declare a stack and make appropriate calls to Push and
Pop, leaving the
implementation details to the writer of the stack component.
lThis approach results in complete adherence to the principles of information hiding and separation of concerns.