comp.lang.ada
 help / color / mirror / Atom feed
From: "Nick Roberts" <nickroberts@adaos.worldonline.co.uk>
Subject: Re: List container: Insert and Delete
Date: Sun, 11 Nov 2001 23:34:18 -0000
Date: 2001-11-11T23:34:18+00:00	[thread overview]
Message-ID: <9sn4qk$13g29j$1@ID-25716.news.dfncis.de> (raw)
In-Reply-To: 3BEEB766.B50C969@acm.org

"Jeffrey Carter" <jrcarter@acm.org> wrote in message
news:3BEEB766.B50C969@acm.org...
> Positive integers are generally used to indicate positions in lists in
> mathematical notation. For a software list implemented using pointers
> (an unbounded list), using integers to indicate positions becomes an
> O(N) time operation for every reference to the list. It is better to
> abstract the concept of a position to something that provides the same
> behavior but with O(1) time complexity.

I know it sounds like a good idea, but I don't think it is in reality. Just
look at all the messing around that has to be done, with pointers to check
you don't delete this, or to check you don't try to access something after
deleting it. It's just not worth it.

It's all very well saying access will be O(N), but that ignores the fact
that chasing down a linked list of pointers is a fast operation (because
each step is very simple). In practice, using integers to index positions
gains you: simplicty for the user; simplicity for the implementor. With
short lists, it's likely to be the most efficient possible implementation
anyway.

> > However, I'm pretty sure that trying to do insertions and deletions
while
> > iterating through a list fails both (a) and (b) miserably. That's what I
was
> > trying to get across.
>
> I agree that one should not be doing insertions and deletions while
> iterating over a list. Iterators should not allow this, and positions
> should generally not be used for iteration.

Your delicate distinction between an 'iterator' and a 'position' is a little
silly. The reasons why it should not be done with iterators are the same as
the reasons why it should not be done with positions.

I have prepared a proposal, which I am e-mailing to Ted Dennison today for
posting on his web site (which he has kindly agreed to). It defines an
abstract list with a big set of operations. In it is an inner package which
defines an 'unbounded' list type, for which I hope to produce a sample
implementation (based on the classic double linkage model). Then I will add
a (generic) child package with a 'bounded' list type, for which I will
produce an implementation (based on a fixed-size array).

The indexed operations will, of course, be of O(1) for the bounded list, yet
being both based on the abstract list type, they will be algorithmically
interchangeable. So there is a deeper reason for my insistence on indexed
operations: I am trying to make a bigger plan 'come together'.

Finally, my proposal includes all the usual head and tail dicing operations.
Chopping off, or adding on, one item to either end of a list will be the
most frequently used operations anyway, for which arguments about indexing
don't apply. The indexed operations are mainly there for convenience. As I
showed in an example in another thread, really serious manipulations of
lists are best done sequentially.

I hope you will look at my proposal, and perhaps be a little more convinced!

--
Best wishes,
Nick Roberts






  parent reply	other threads:[~2001-11-11 23:34 UTC|newest]

Thread overview: 189+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-11-10  3:51 List container strawman 1.2 Ted Dennison
2001-11-10  4:20 ` Jeffrey Carter
2001-11-10  4:59   ` Ted Dennison
2001-11-10 11:14 ` Florian Weimer
2001-11-10 16:24   ` Ted Dennison
2001-11-10 17:39     ` Florian Weimer
2001-11-10 18:31       ` Ted Dennison
2001-11-10 18:45         ` Jean-Marc Bourguet
2001-11-10 22:44           ` Ted Dennison
2001-11-11  3:59             ` Steven Deller
2001-11-11 11:29               ` Jean-Marc Bourguet
2001-11-11 17:42                 ` Steven Deller
2001-11-11 12:36             ` Jean-Marc Bourguet
2001-11-10 22:07         ` Jeffrey Carter
2001-11-11 17:28           ` Jeffrey Carter
2001-11-10 14:51 ` Ehud Lamm
2001-11-10 16:08   ` Larry Kilgallen
2001-11-10 16:23     ` List container: Insert and Delete Nick Roberts
2001-11-10 17:13       ` Ted Dennison
2001-11-10 21:20         ` Nick Roberts
2001-11-10 22:15           ` Ehud Lamm
2001-11-10 22:48             ` Ted Dennison
2001-11-10 22:40       ` Jeffrey Carter
2001-11-11  4:00         ` Nick Roberts
2001-11-11 17:37           ` Jeffrey Carter
2001-11-11 19:29             ` Steven Deller
2001-11-12  0:20               ` Nick Roberts
2001-11-12  3:48                 ` Steven Deller
2001-11-12 13:54                   ` Nick Roberts
2001-11-12 15:21                     ` Larry Kilgallen
2001-11-13  1:19                       ` Nick Roberts
2001-11-12 17:27                     ` Jeffrey Carter
2001-11-13  1:28                       ` Nick Roberts
2001-11-13  1:37                         ` Darren New
2001-11-13 15:58                         ` John English
2001-11-13 17:53                         ` Pascal Obry
2001-11-12 15:42                   ` Marin David Condic
2001-11-12  5:23                 ` Ted Dennison
2001-11-12 13:04                   ` Nick Roberts
2001-11-12 16:36                     ` Ted Dennison
2001-11-12 17:20                     ` Jeffrey Carter
2001-11-12 18:55                       ` Marin David Condic
2001-11-12 19:56                         ` Larry Kilgallen
2001-11-12 20:36                           ` Marin David Condic
2001-11-12 21:14                           ` Darren New
2001-11-13  7:31                           ` Simon Wright
2001-11-13 21:31                             ` Marin David Condic
2001-11-14  4:43                               ` Nick Roberts
2001-11-13  2:16                         ` Jeffrey Carter
2001-11-13 14:18                           ` Marin David Condic
2001-11-13 15:03                             ` Ted Dennison
2001-11-13 15:28                               ` Marin David Condic
2001-11-13 16:16                               ` Jeffrey Carter
2001-11-13 19:59                                 ` Ted Dennison
2001-11-13 20:18                                   ` Marin David Condic
2001-11-13 21:26                                     ` Ted Dennison
2001-11-13 21:39                                       ` Marin David Condic
2001-11-13 22:16                                         ` Map container (was: List container: Insert and Delete) Ted Dennison
2001-11-14 15:07                                           ` Marin David Condic
2001-11-13 22:22                                   ` List container: Insert and Delete Jeffrey Carter
2001-11-13 17:46                               ` Darren New
2001-11-13 19:25                                 ` Steven Deller
2001-11-13 19:40                                   ` Darren New
2001-11-13 20:53                                     ` Ted Dennison
2001-11-13 20:10                                 ` Ted Dennison
2001-11-13 21:31                                   ` Darren New
2001-11-13 22:37                                     ` Ted Dennison
2001-11-13 22:44                                       ` Ted Dennison
2001-11-13 23:00                                       ` Darren New
2001-11-14 14:31                                         ` Ted Dennison
2001-11-13 14:20                           ` Steven Deller
2001-11-13 15:48                   ` John English
2001-11-13 20:22                     ` Ted Dennison
2001-11-14 12:59                       ` John English
2001-11-14 14:55                         ` Ted Dennison
2001-11-14 15:34                           ` Marin David Condic
2001-11-15 16:35                           ` John English
2001-11-14 16:41                         ` Jeffrey Carter
2001-11-13 20:22                     ` Ehud Lamm
2001-11-13 21:33                       ` Simon Wright
2001-11-14 12:54                       ` John English
2001-11-14 16:43                         ` Ehud Lamm
2001-11-14 18:19                           ` Marin David Condic
2001-11-15  4:29                             ` List container: Sawdust woman 43 Jeffrey Carter
2001-11-15 15:25                               ` Marin David Condic
2001-11-16  1:59                                 ` Jeffrey Carter
2001-11-15 20:30                             ` List container: Insert and Delete Simon Wright
2001-11-15 17:01                           ` John English
2001-11-19 17:40                             ` Ted Dennison
2001-11-20 10:52                               ` John English
2001-11-13 21:07                     ` Ted Dennison
2001-11-12 17:18                 ` Jeffrey Carter
2001-11-12 17:13               ` Jeffrey Carter
2001-11-11 23:34             ` Nick Roberts [this message]
2001-11-12 16:33               ` Jeffrey Carter
2001-11-12 17:28                 ` Ted Dennison
2001-11-13  2:27                   ` Jeffrey Carter
2001-11-13 14:21                     ` Ted Dennison
2001-11-14  4:16                       ` Nick Roberts
2001-11-14 15:03                         ` Ted Dennison
2001-11-13  0:51                 ` Nick Roberts
2001-11-12 16:51               ` Ted Dennison
2001-11-13  0:44                 ` Nick Roberts
2001-11-13 14:18                   ` Ted Dennison
2001-11-14  4:17                     ` Nick Roberts
2001-11-10 16:12   ` List container strawman 1.2 Ted Dennison
2001-11-10 18:49     ` Jean-Marc Bourguet
2001-11-10 19:29       ` Ehud Lamm
2001-11-11 10:46         ` Jean-Marc Bourguet
2001-11-11 13:07           ` Larry Kilgallen
2001-11-10 19:07     ` Jacob Sparre Andersen
2001-11-10 22:53       ` Ted Dennison
2001-11-12 16:45         ` Jacob Sparre Andersen
2001-11-13  0:55           ` Nick Roberts
2001-11-13 15:11             ` Ted Dennison
2001-11-10 22:17     ` Jeffrey Carter
2001-11-11 22:04       ` Simon Wright
2001-11-12 16:53         ` Ted Dennison
2001-11-13  7:25           ` Simon Wright
2001-11-13 22:04             ` Ted Dennison
2001-11-10 17:43   ` Florian Weimer
2001-11-10 16:46 ` Ted Dennison
2001-11-10 18:50   ` Steven Deller
2001-11-12  9:25 ` Martin Dowie
2001-11-12 12:57   ` Nick Roberts
2001-11-12 15:32   ` Marin David Condic
2001-11-12 16:58     ` Martin Dowie
2001-11-12 18:44       ` Marin David Condic
2001-11-13  7:18         ` Simon Wright
2001-11-13 21:26           ` Marin David Condic
2001-11-15 23:53             ` martin.m.dowie
2001-11-12 17:35     ` Ted Dennison
2001-11-12 18:39       ` Martin Dowie
2001-11-12 19:58         ` Ted Dennison
2001-11-12 18:39     ` Steven Deller
2001-11-12 20:05       ` Ted Dennison
2001-11-13 19:12       ` Stephen Leake
2001-11-12 16:37   ` Jeffrey Carter
2001-11-12 18:50     ` Marin David Condic
2001-11-13  1:07       ` Nick Roberts
2001-11-13 15:13         ` Ted Dennison
2001-11-15 23:54           ` martin.m.dowie
2001-11-13 19:10   ` Stephen Leake
     [not found] ` <3BF0247D.4500975E@san.rr.com>
2001-11-12 20:30   ` Ehud Lamm
2001-11-12 21:57   ` Ted Dennison
2001-11-12 22:53     ` Darren New
2001-11-12 22:55       ` Darren New
2001-11-13 15:54         ` Ted Dennison
2001-11-13 19:17           ` Stephen Leake
2001-11-13 22:37           ` Jeffrey Carter
2001-11-13 15:49       ` Ted Dennison
2001-11-13 16:38         ` Martin Dowie
2001-11-13 19:06           ` Ted Dennison
2001-11-13 19:43             ` Marin David Condic
2001-11-13 20:50               ` Ted Dennison
2001-11-13 21:08                 ` Marin David Condic
2001-11-14  4:34                   ` Nick Roberts
2001-11-14 14:58                     ` Marin David Condic
2001-11-13 17:36         ` Darren New
2001-11-14  4:40           ` Nick Roberts
2001-11-13 22:34         ` Jeffrey Carter
2001-11-14 13:39           ` John English
2001-11-14 15:09             ` Ted Dennison
2001-11-14 16:04               ` Jeffrey Carter
2001-11-14 16:36                 ` Ted Dennison
2001-11-15 16:31               ` John English
2001-11-19 17:59                 ` Ted Dennison
2001-11-19 21:08                   ` Stephen Leake
2001-11-20 10:43                   ` John English
2001-11-21 19:40                   ` ramatthews
2001-11-22  3:01                     ` Nick Roberts
2001-11-22  9:28                       ` John English
2001-11-24  3:52                         ` Nick Roberts
2001-11-23  2:21                       ` Ted Dennison
2001-11-24  0:27                         ` John English
2001-11-27 20:04                         ` Marin David Condic
2001-11-28  8:10                           ` Thomas Wolf
2001-11-28 14:29                             ` Marin David Condic
2001-11-28 17:34                               ` Ted Dennison
2001-11-28 18:01                                 ` Marin David Condic
2001-11-28 18:53                                   ` Ted Dennison
2001-11-28 19:08                                     ` Overriding 'Class'Input (was: List container strawman 1.1) Ted Dennison
2001-11-28 19:19                                       ` Ted Dennison
2001-11-28 20:40                                       ` Marin David Condic
2001-11-28 21:21                                         ` Ted Dennison
2001-11-28 21:50                                           ` Marin David Condic
2001-11-29  5:12                                             ` Nick Roberts
2001-11-29 20:04                               ` List container strawman 1.2 Thomas Wolf
2001-11-16  0:01             ` martin.m.dowie
replies disabled

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