Jump to content

Queue/Definition: Difference between revisions

Added Algol W
(Added Kotlin)
(Added Algol W)
Line 470:
 
SKIP</lang>'''See also:''' [[Queue/Usage#ALGOL_68|Queue/Usage]]
 
=={{header|ALGOL W}}==
<lang algolw>begin
% define a Queue type that will hold StringQueueElements %
record StringQueue ( reference(StringQueueElement) front, back );
% define the StringQueueElement type %
record StringQueueElement ( string(8) element
; reference(StringQueueElement) next
);
% we would need separate types for other element types %
% adds s to the end of the StringQueue q %
procedure pushString ( reference(StringQueue) value q
; string(8) value e
) ;
begin
reference(StringQueueElement) newElement;
newElement := StringQueueElement( e, null );
if front(q) = null then begin
% adding to an empty queue %
front(q) := newElement;
back(q) := newElement
end
else begin
% the queue is not empty %
next(back(q)) := newElement;
back(q) := newElement
end
end pushString ;
% removes an element from the front of the StringQueue q %
% asserts the queue is not empty, which will stop the %
% program if it is %
string(8) procedure popString ( reference(StringQueue) value q ) ;
begin
string(8) v;
assert( not isEmptyStringQueue( q ) );
v := element(front(q));
front(q) := next(front(q));
if front(q) = null then % just popped the last element % back(q) := null;
v
end popStringQueue ;
% returns true if the StringQueue q is empty, false otherwise %
logical procedure isEmptyStringQueue ( reference(StringQueue) value q ) ; front(q) = null;
 
begin % test the StringQueue operations %
reference(StringQueue) q;
q := StringQueue( null, null );
pushString( q, "fred" );
pushString( q, "whilma" );
pushString( q, "betty" );
pushString( q, "barney" );
while not isEmptyStringQueue( q ) do write( popString( q ) )
end
end.</lang>
{{out}}
<pre>
fred
whilma
betty
barney
</pre>
 
=={{header|AutoHotkey}}==
3,060

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.