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> |