Singly-linked list/Element insertion: Difference between revisions
Singly-linked list/Element insertion (view source)
Revision as of 14:48, 22 June 2023
, 11 months ago→{{header|REXX}}: refurbished and extended the output
Walterpachl (talk | contribs) (→{{header|ooRexx}}: corrected linkedlist to list and added output) |
Walterpachl (talk | contribs) (→{{header|REXX}}: refurbished and extended the output) |
||
Line 1,932:
=={{header|REXX}}==
<syntaxhighlight lang="rexx">/*REXX program demonstrates how to create
Call set_list 3 /* linked list: 12 Proth primes */
Call set_list 5 /*see https://mathworld.wolfram.com/ProthPrime.html*/
Call set_list 13
Call set_list 17
Call set_list 41
Call set_list 97
Call set_list 113
Call set_list 193
Call set_list 241
Call set_list 257
Call set_list 353
Call set_list 449
Call show_list
after = 97 /* ◄──── REXX code to do insert. */▼
nnn=z..after
Call ins_list nnn,newval /* perform the insertion */
Say ''
Call show_list
@._last=@._last+1 /*bump number of list elements. */▼
set_list: Procedure Expose z.
z..value=new /* set a locator pointer to self. */
say center('item',6) center('value',w) center('next',6)▼
Return
say center('' ,6,'─') center('' ,w,'─') center('' ,6,'─')▼
p=1▼
ins_list: Procedure Expose z.
do j=1 until p==0 /*show all entries of linked list*/▼
Parse Arg nnn,value
say right(j,6) right(@.p._value,w) right(@.p._next,6)▼
p=@.p._next▼
z.last.0value=value /* store the new value */
z.last.0next=z.nnn.0next /* uptate the pointers to the */
z.0width=max(z.0width,length(value)) /*set maximum width of any value*/
▲n=_+1 /*bump last ptr in linked list. */
Return
▲@._._next=n /*set the next pointer value. */
show_list:
▲@.n._value=y /*set item to the value specified*/
Say
▲@.n._next=0 /*set the next pointer value. */
▲@.max_width=max(@.max_width,length(y)) /*set maximum width of any value.*/
▲ p=1
End /* j */
Return</syntaxhighlight>
'''output'''
<pre>
item position value next
------ -------- ------- ------
1 1 3 2
2 2 5 3
3 3 13 4
4 4 17 5
5 5 41 6
6 6 97 7
7 7 113 8
8 8 193 9
9 9 241 10
10 10 257 11
11 11 353 12
12 12 449 0
a new value of 100 has been inserted after element having the value: 97
item position value next
------ -------- ------- ------
1 1 3 2
2 2 5 3
3 3 13 4
4 4 17 5
5 5 41 6
6 6 97 13
7 13 100 7
8 7 113 8
9 8 193 9
10 9 241 10
11 10 257 11
12 11 353 12
13 12 449 0</pre>
=={{header|Ruby}}==
|