69 lines
1.3 KiB
Plaintext
69 lines
1.3 KiB
Plaintext
DataSection
|
|
;the list of words that will be added to the list
|
|
words:
|
|
Data.s "One", "Two", "Three", "Four", "Five", "Six", "EndOfData"
|
|
EndDataSection
|
|
|
|
|
|
Procedure displayList(List x.s(), title$)
|
|
;display all elements from list of strings
|
|
Print(title$)
|
|
ForEach x()
|
|
Print(x() + " ")
|
|
Next
|
|
PrintN("")
|
|
EndProcedure
|
|
|
|
|
|
OpenConsole()
|
|
|
|
NewList a.s() ;create a new list of strings
|
|
|
|
;add words to the head of list
|
|
Restore words
|
|
Repeat
|
|
Read.s a$
|
|
If a$ <> "EndOfData"
|
|
ResetList(a()) ;Move to head of list
|
|
AddElement(a())
|
|
a() = a$
|
|
EndIf
|
|
Until a$ = "EndOfData"
|
|
displayList(a(),"Insertion at Head: ")
|
|
|
|
|
|
ClearList(a())
|
|
;add words to the tail of list
|
|
Restore words
|
|
LastElement(a()) ;Move to the tail of the list
|
|
Repeat
|
|
Read.s a$
|
|
If a$ <> "EndOfData"
|
|
AddElement(a()) ;after insertion the new position is still at the tail
|
|
a() = a$
|
|
EndIf
|
|
Until a$ = "EndOfData"
|
|
displayList(a(),"Insertion at Tail: ")
|
|
|
|
|
|
ClearList(a())
|
|
;add words to the middle of list
|
|
Restore words
|
|
ResetList(a()) ;Move to the tail of the list
|
|
Repeat
|
|
Read.s a$
|
|
If a$ <> "EndOfData"
|
|
c = CountList(a())
|
|
If c > 1
|
|
SelectElement(a(),Random(c - 2)) ;insert after a random element but before tail
|
|
Else
|
|
FirstElement(a())
|
|
EndIf
|
|
AddElement(a())
|
|
a() = a$
|
|
EndIf
|
|
Until a$ = "EndOfData"
|
|
displayList(a(),"Insertion in Middle: ")
|
|
|
|
Repeat: Until Inkey() <> ""
|