comp.lang.ada
 help / color / mirror / Atom feed
From: mfb@mbunix.mitre.org (Michael F Brenner)
Subject: Re: What is a queue?
Date: 1999/02/17
Date: 1999-02-17T00:00:00+00:00	[thread overview]
Message-ID: <7afgd8$fnj@top.mitre.org> (raw)
In-Reply-To: 36C19EBE.FF25D409@spam.innocon.com

    > Mike wrote a long message about queues, which he defined as
    > having such operations as Add_To_Left and Add_To_Right.
    > 
    > All additions to a queue go on the tail, and all removals come from the
    > head. A structure which allows additions and removals from both ends is
    > a dequeue (pronounced deck).

Thanks for the alternative to the first definition, which has some
strengths.

However, there is nothing wrong with implementing
a general-purpose extensible array of data and
putting and taking from either end, so you get two-sided queue,
which can serve as the implementation of both of your definitions
(dequeue and queue), as well as the implementation of a stack.

When three structures are this closely related, it makes sense
to do the extensible data structures with my more flexible
definition, and then provide application-level restricted
packages that provide only certain operations.

In one sense, the exclusive definition is written for that
higher level and the inclusive defintion was intended for that
lower implementation level, because the programmer may spend
quite a bit more time on that level than on the outer levels.

I was at the grocery store today and the clerk opened up an
new line and the back half of the queue wound around to that
new line, effectively taking from both ends of the queue
at the same time.

And many algorithms require PEEKING at various intermediate
elements of a two-sided queue without deleteing them from the
queue. For example, a 10-line windowed grep, which searches
for a pattern and prints the file name and the previous 
10 lines and the next 10 lines for each line that matches
the pattern.

Thanks again for pointing out that there are several ways of
defining things, and several ways of implementing various
data structures.

Mike





  reply	other threads:[~1999-02-17  0:00 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-01-25  0:00 What is a queue? Joshua Shriver
1999-01-26  0:00 ` dennison
1999-02-02  0:00   ` Nick Roberts
1999-02-09  0:00 ` Michael F Brenner
1999-02-10  0:00   ` adam
1999-02-10  0:00     ` Fraser Wilson
1999-02-10  0:00   ` Jeff Carter
1999-02-17  0:00     ` Michael F Brenner [this message]
1999-02-18  0:00       ` robert_dewar
1999-02-19  0:00       ` Jeff Carter
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox