comp.lang.ada
 help / color / mirror / Atom feed
From: "Liddle Feesh" <no_see_reply_address@spam.com>
Subject: Re: Can someone help me understand this queue package?
Date: Sat, 29 Dec 2001 19:37:51 -0000
Date: 2001-12-29T19:37:51+00:00	[thread overview]
Message-ID: <9ZoX7.10133$Zg2.442282@news11-gui.server.ntli.net> (raw)
In-Reply-To: mailman.1009625522.9105.comp.lang.ada@ada.eu.org

"Michal Nowak" wrote:

> You may even download all zipped files.

If you have them, would you mind emailing them to me, since the website is
currently down.

> >> >Could someone be so kind as to convert the following package into
> >> >pseudo-code for me?
> >>
> >> No :-)).
> >> Solution 1.
> >> Treat a queue as a simple list (you may abandon Iterators idea for
> >> simplicity), with operations Add and Remove.
> >> Add is something like Insert at beginning,
> >> and Remove is like delete at the end.
> >
> >Will do... What is Iterators idea?
>
> "ADA 95: THE CRAFT OF OBJECT-ORIENTED PROGRAMMING" - chapter 11
> (in particular - 11.4)

I'll see if that particular section is on Google's Cache.

> >> Solution 2.
> >> Take paper, pencil and draw what is happening with pointers (access
> >> types) during addition and removal (such as on pictures in chapter 11).
> >> Than implement it.
> >
> >Yes, but what >IS< happening with pointers? I'll have a go.
>
> Ooops, I don't get what you mean by it. Hmm, you create a node, a then
> set some variables f access types (pointers) to point you to this node,
> and some pointers from this node to point to another node.

Some lovely diagrams :) Best viewed in fixed-point font though!

>     end of queue                       Beginning of queue
>         |                                     |
>        \|/                                   \|/
>         V                                     V
>   --------------      ---------------     ----------------
>   | Data | Next|--->  | Data | Next |---> | Data | Next |
>   --------------      ---------------     ----------------
>       Node 3             Node 2               Node 1
>
> Suppose now you add something to the end of the queue.
> You create new node (let's call it New_Node) and set its
> Next pointer to point to last element in the queue.
>
>       end of queue                      Beginning of queue
>        (Tail)                               (Head)
>          |                                     |
>         \|/                                   \|/
>          V                                     V
>   --------------      ---------------      ---------------
>   | Data | Next|--->  |Data  | Next |---> | Data | Next |
>   --------------      ---------------      ---------------
>       Node 3             Node 2               Node 1
>
>
>   --------------
>   | Data| Next  |
>   ---------------
>    New_Node
>
> New_Node.Next := Tail;
> Tail          := New_Node;
>
> So now you have something like this:
>
>       end of queue                               Beginning of queue
>        (Tail)                                          (Head)
>          |                                                |
>         \|/                                              \|/
>          V                                                V
>  -------------     ------------    -------------     --------------
>  | Data| Next |-->| Data | Next|-->| Data| Next |-->| Data | Next |
>  -------------     -------------   -------------     --------------
>     New node        Node 3             Node 2              Node 1
>
>
> Removal is similar, although you may need to add Prev to node to point for
> previous item for convenience (unless you want to go through whole queue
to
> search for element before the last one).
>
> So if we remove Node_1 element (Node_2 := Node_1.Prev)
> Node_2.next := null;
> Head        := Node_2;
>
> Is this what you were looking for?

Uh - yes, and I couldn't have asked for a better, more clear explanation. I
hope this sits on Google's archive for a long time to come to help out all
those other hapless newbies!

> >> BTW it looks like a homework or something. Do you want to stay with Ada
> >> for a longer time, or just write the program, pass the subject, and
> >forget?
> >
> >I like the principals of ADA - it'll probably be something I'll stick
with
> >and have to learn. I'm trying to read it as part of my degree;
>
> Great. So you should know a secret - it is Ada :-))

Another Difficult Addon. or A Dysfunctional Analogy ;)

> >of course
> >ADA
> >is quite a good skill to learn; esp. with the industries in my local
area.
>
> I may envy you that...

It's quite common here. Check out www.jobserve.co.uk for Ada - I think this
should bring back some interesting reading.

> >> However, good luck and don't break down,
> >
> >I think I'm about to cry...
>
> Oh, boy, don't joke ;-))

*Grabs some Gin and Tonic*


--
Liddle Feesh
 '  O 0 o <"//><  ' o'^
(Remove UNDERPANTS to reply)







  reply	other threads:[~2001-12-29 19:37 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-12-28 17:14 Can someone help me understand this queue package? Liddle Feesh
2001-12-28 18:16 ` Michal Nowak
2001-12-28 22:57   ` Liddle Feesh
2001-12-29 11:35     ` Michal Nowak
2001-12-29 19:37       ` Liddle Feesh [this message]
2001-12-29 20:05         ` Michal Nowak
2001-12-29 20:44           ` Liddle Feesh
2001-12-29 22:02       ` Liddle Feesh
2001-12-30 13:14         ` Michal Nowak
2001-12-30 22:28           ` Liddle Feesh
2001-12-31 10:32             ` Michal Nowak
2001-12-29 17:13   ` Liddle Feesh
2001-12-29 18:42     ` martin.m.dowie
2001-12-29 19:09       ` Liddle Feesh
2001-12-29 17:13   ` Liddle Feesh
2001-12-29 17:13   ` Liddle Feesh
2001-12-29 17:14     ` Liddle Feesh
2001-12-29 17:39     ` Liddle Feesh
replies disabled

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