Data update
This commit is contained in:
parent
4bb20c9b71
commit
cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions
43
Task/Stack/Oberon-07/stack-1.oberon
Normal file
43
Task/Stack/Oberon-07/stack-1.oberon
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
MODULE StackOfInteger;
|
||||
|
||||
TYPE T = INTEGER;
|
||||
Element = RECORD value : T; next : POINTER TO Element END;
|
||||
StackRecord = RECORD top : POINTER TO Element END;
|
||||
Stack* = POINTER TO StackRecord;
|
||||
|
||||
PROCEDURE push*( s : Stack; v : T );
|
||||
VAR newElement : POINTER TO Element;
|
||||
BEGIN
|
||||
NEW( newElement );
|
||||
newElement.value := v;
|
||||
newElement.next := s.top;
|
||||
s.top := newElement
|
||||
END push;
|
||||
|
||||
PROCEDURE peek*( s : Stack ) : T;
|
||||
BEGIN
|
||||
RETURN s.top.value
|
||||
END peek;
|
||||
|
||||
PROCEDURE pop*( s : Stack ) : T;
|
||||
VAR v : T;
|
||||
BEGIN
|
||||
v := peek( s );
|
||||
s.top := s.top.next
|
||||
RETURN v
|
||||
END pop;
|
||||
|
||||
PROCEDURE empty*( s : Stack ) : BOOLEAN;
|
||||
BEGIN
|
||||
RETURN s.top = NIL
|
||||
END empty;
|
||||
|
||||
PROCEDURE newStack*() : Stack;
|
||||
VAR s : Stack;
|
||||
BEGIN
|
||||
NEW( s );
|
||||
s.top := NIL;
|
||||
RETURN s
|
||||
END newStack;
|
||||
|
||||
END StackOfInteger.
|
||||
26
Task/Stack/Oberon-07/stack-2.oberon
Normal file
26
Task/Stack/Oberon-07/stack-2.oberon
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
MODULE UseStack; (* use the StackOfInteger module *)
|
||||
IMPORT Out, SI := StackOfInteger; (* imports StackOfInteger under the name "SI" *)
|
||||
|
||||
VAR st : SI.Stack;
|
||||
v, sum : INTEGER;
|
||||
|
||||
BEGIN
|
||||
|
||||
st := SI.newStack(); (* create a stack *)
|
||||
|
||||
SI.push( st, 1 ); (* add some items *)
|
||||
SI.push( st, 23 );
|
||||
SI.push( st, 456 );
|
||||
|
||||
WHILE ~ SI.empty( st ) DO (* unstack, sum and print the items *)
|
||||
v := SI.pop( st );
|
||||
INC( sum, v );
|
||||
Out.Int( v, 0 );
|
||||
IF ~ SI.empty( st ) THEN
|
||||
Out.String( " (" );Out.Int( SI.peek( st ), 0 );Out.String( ")" )
|
||||
END;
|
||||
Out.Ln
|
||||
END;
|
||||
Out.String( "sum: " );Out.Int( sum, 0 );Out.Ln
|
||||
|
||||
END UseStack.
|
||||
Loading…
Add table
Add a link
Reference in a new issue