comp.lang.ada
 help / color / mirror / Atom feed
From: Charles Hixson <charleshixsn@earthlink.net>
Subject: Re: Programming Queues in ADA (Very Urgent)
Date: 2000/05/10
Date: 2000-05-10T00:00:00+00:00	[thread overview]
Message-ID: <3919C745.5AA1ABBC@earthlink.net> (raw)
In-Reply-To: 8fcfhe$b1d$1@lola.ctv.es

I don't really know the details of your application, but a couple of notes:
1)  On many systems rather than deleting and re-allocating nodes it is better to
maintain a list of free nodes, then before allocating a new node, one checks to
see whether or not the free list is empty.  If it is, then one goes ahead and
allocates a new node.  Otherwise one moves a node from the free node list to the
queue.  This prevents heap fragmentation, as all nodes are the same size (which
all chunks of memory probably wouldn't be.)
2)  If you MUST deallocate, check into unchecked_deallocation.
3)  I don't know your level of expertise, but just in case, be sure to clean up
any pointers (access variables) BEFORE freeing them.

S|r |ceman wrote:

> H. I need to program a queue in ADA, dont know if queue is the real word in
> English, but you will understand FIFO stack I think ;-)
>
> I dont know who to delete an element from the FIFO stack. I have implemented
> it under pointers, and the thing is like this:
>
> .ADS Stack Specification:
>
>     type NodoCola;
>     type Puntero is access NodoCola;
>
>     type NodoCola is record
>
>         Elemento: Tipo_Elemento;
>         Next: Puntero;
>
>     end record;
>
>     type Cola is record
>
>         Registro: Puntero;
>         NumElem: Natural := 0;
>
>     end record;
>
> Deleting the element in out position:
>
>     procedure Extraer (C: in out Cola) is
>
>         Aux: Puntero := new NodoCola;
>
>     begin
>
>         Aux := C.Registro;
>
>         if (Es_Vac�a(C)) then
>
>             raise E_Cola_Vac�a;
>
>         else
>
>             C.Registro := C.Registro.Next;
>
>             C.NumElem := C.NumElem - 1;
>
>         end if;
>
>     end Extraer;
>
> Thank you for helping me with this ;-)
>
> See ya.
>
> P.D. If anyone of you could help me, please could you answer into my mailbox
> :? Thanks anyway ;-)
>
> [|] Miguel Angel P�rez (S|r |ceman).
> [|] Administrador General de Networking Center(R), 2000
> [|] Email: iceman@webshack-cafe.com
>               iceman@networking-center.org
>               admin@networking-center.org
>
> [|] Networking Center(R) - Proyecto C.I.R.I.T.
>
> [|] Web: http://www.networking-center.org
> [|] FTP: ftp://ftp.networking-center.org
> [|] IRC: IRC Hispano, [irc.irc-hispano.org], Canal: #Networking.





      parent reply	other threads:[~2000-05-10  0:00 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-05-10  0:00 Programming Queues in ADA (Very Urgent) S|r |ceman
2000-05-10  0:00 ` Ted Dennison
2000-05-11  0:00   ` David C. Hoos, Sr.
2000-05-11  0:00     ` Pascal Obry
2000-05-11  0:00     ` Ted Dennison
2000-05-10  0:00 ` Charles Hixson [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