// NOTE EVERYTHING WORKS EXCEPT THE LINE NOTED, SEE BELOW...
prioqueue
var
value
item
prioqueue/next
New()
world << "New prioqueue"
value=999999999
item=null
next=null
return src
Del()
if(next==null)
world << "del terminator"
..()
else
del next
world << "del [item]=[value]"
..()
return
proc
insert(newvalue,newitem)
if(newvalue>=value)
if(item==newitem)
return
else
next.insert(newvalue,newitem)
else
var/prioqueue/p=new()
p.value=value; p.item=item; p.next=next
value=newvalue; item=newitem; next=p
return
remfirst()
world << "remfirst creating returnval"
var/prioqueue/returnval=new()
world << "inserting 1st item to returnval"
returnval.insert(value,item)
world << "returnval=[returnval.totext()] src=[totext()]"
world << "setting src=next"
src=next // <<<<<*********** PROBLEM IS HERE
world << "returning returnval=[returnval.totext()] src=[totext()]"
return returnval
totext()
if(next==null) return ""
return "[item]=[value] [next.totext()]"
mob
verb
testqueue()
var/prioqueue/P=new()
world << "newed P=[P.totext()]"
P.insert(10,"A")
world << "inserted A, P=[P.totext()]"
P.insert(20,"B")
world << "inserted B, P=[P.totext()]"
world << "creating Q to get 1st item"
var/prioqueue/Q=new()
world << "calling Q=P.remfirst()"
Q = P.remfirst()
world << "final result Q=[Q.totext()] P=[P.totext()]"
Problem description:
In remfirst(), I want it to return the 1st node, then set the queue to the next node. src=next appears to set the queue to the next node, but after returning it didn't really do anything.
Here's the output:
New prioqueue
newed P=
New prioqueue
inserted A, P=A=10
New prioqueue
inserted B, P=A=10 B=20
creating Q to get 1st item
New prioqueue
calling Q=P.remfirst()
remfirst creating returnval
New prioqueue
inserting 1st item to returnval
New prioqueue
returnval=A=10 src=A=10 B=20
setting temp=src
setting src=next
returning returnval=A=10 src=B=20
del terminator
final result Q=A=10 P=A=10 B=20
del terminator
del A=10
del terminator
del B=20
del A=10