Example 2 ( Level 2 ) |
{ Is a liked list included in another ? }
LET
L1 , L2 : LISTS ;
Search , All : FUNCTION ( BOOLEAN ) ;
BEGIN
CREATE_LIST ( L1 , [ 2 , 5 , 9 , 8 , 3 , 6 ] ) ;
CREATE_LIST ( L2 , [ 12 , 5 , 19 , 8 , 3 , 6 , 2 , 9 ] ) ;
WRITE ( All ( L1 , L2 ) )
END
{ Search for a value in a linked list }
FUNCTION Search ( L , Val ) : BOOLEAN
LET
L : LIST ;
Val : INTEGER ;
BEGIN
IF L = NULL
Search := FALSE
ELSE
IF CELL_VALUE ( L ) = Val
Search := TRUE
ELSE
Search := Search ( NEXT ( L ) , Val )
ENDIF
ENDIF
END
{ Is L1 included in L2? }
FUNCTION All ( L1 , L2 ) : BOOLEAN
LET
L1 , L2 : LISTS ;
BEGIN
IF L1 = NULL
All := TRUE
ELSE
IF NOT Search ( L2 , CELL_VALUE ( L1 ) )
All := FALSE
ELSE
All := All ( NEXT ( L1 ) , L2 )
ENDIF
ENDIF
END