VList: Difference between revisions

Content added Content deleted
m (→‎{{header|Phix}}: syntax coloured)
(Applesoft BASIC)
Line 15: Line 15:
The task is to demonstrate creation of a VList and how to perform the primary operations.
The task is to demonstrate creation of a VList and how to perform the primary operations.


=={{header|Applesoft BASIC}}==
<lang gwbasic> 0 DEF FN CDR(X) = V(X):Q$ = CHR$ (34)
1 FOR A = 6 TO 1 STEP - 1:A$ = STR$ (A): PRINT "CONS "A$": ";: GOSUB 10: GOSUB 50: NEXT A
2 GOSUB 30: PRINT "LENGTH: "L
3 PRINT "CDR: ";:V = FN CDR(V): GOSUB 50
4 GOSUB 30: PRINT "LENGTH: "L
5 I = 3: PRINT "ITEM "I": ";: GOSUB 20: GOSUB 90:I = 8: PRINT "ITEM "I": ";: GOSUB 20: GOSUB 90
6 END

REM CONS given A$ return V
10 N = N + 1:V(N) = V:V$(N) = A$:V = N: RETURN

REM GET ITEM given I return A
20 FOR N = 1 TO I:A = V:V = V(V): NEXT N: PRINT MID$ ("",1,0 ^ V((A = 0) * 32767));: RETURN

REM GET LENGTH OF LIST given V return L
30 A = V: FOR L = 1 TO 1E9: IF V(A) THEN A = V(A): NEXT L
40 RETURN

REM PRINT STRUCTURE given V
50 C$ = "": FOR P = V TO 0 STEP 0: IF V THEN PRINT C$;: GOSUB 70:C$ = ", ":P = V(P): NEXT P
60 PRINT : RETURN

REM PRINT ELEMENT given P
70 IF P THEN PRINT Q$V$(P)Q$;: RETURN
80 PRINT "NULL";: RETURN

REM PRINT ELEMENT WITH NEWLINE given A
90 P = A: GOSUB 70: PRINT : RETURN</lang>
{{out}}
<pre>
CONS 6: "6"
CONS 5: "5", "6"
CONS 4: "4", "5", "6"
CONS 3: "3", "4", "5", "6"
CONS 2: "2", "3", "4", "5", "6"
CONS 1: "1", "2", "3", "4", "5", "6"
LENGTH: 6
CDR: "2", "3", "4", "5", "6"
LENGTH: 5
ITEM 3: "4"
ITEM 8:
?BAD SUBSCRIPT ERROR IN 20
</pre>
=={{header|C}}==
=={{header|C}}==
<lang c>#include <stdio.h>
<lang c>#include <stdio.h>