From: Jeff Carter <spam.carter.not@spam.innocon.com>
Subject: Re: What is a queue?
Date: 1999/02/19
Date: 1999-02-19T00:00:00+00:00 [thread overview]
Message-ID: <36CD847C.5C50BD27@spam.innocon.com> (raw)
In-Reply-To: 7afgd8$fnj@top.mitre.org
Michael F Brenner wrote:
>
> > 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.
Well, at a low level, queues, dequeues, and stacks are all I/O-limited
lists, but that does not make a list a queue. It means that a list may
used to implement a queue. Similarly, a dequeue may be used to implement
a queue, but a dequeue is not a queue.
>
> 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.
I think I mentioned the same kind of discrepencies between ideal
software queues and the people queues one encounters in the real world.
>
> 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
--
Jeff Carter
E-mail: carter commercial-at innocon [period | full stop] com
"I unclog my nose towards you."
Monty Python & the Holy Grail
prev parent reply other threads:[~1999-02-19 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
1999-02-18 0:00 ` robert_dewar
1999-02-19 0:00 ` Jeff Carter [this message]
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox