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)
next prev parent 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