Re: List question
- From: Helmethead <hoshem mel comcen com au>
- To: Eric Lemings <eric b lemings lmco com>
- Cc: gtk-devel-list gnome org
- Subject: Re: List question
- Date: Fri, 25 May 2001 12:52:05 +1000
On Thu, May 24, 2001 at 12:27:00PM -0600, Eric Lemings wrote:
> Hello all,
>
> I was just looking at the source for glist.c and a thought occurred to
> me (which happens on occasion). ;) What if the client passes a pointer
> to the tail of the list, or any arbitrary node within the list, to some
> of these functions? Would this break some functions, cause them to
> fail, or operate in unexpected ways?
>
> For example,
>
> GList* node = NULL;
> GList* head = NULL;
> /* Add several nodes... */
> GList* tail = g_list_last (head);
>
> /* Does this actually prepend to the head of the list?
> */
> node = g_list_prepend (tail, data);
>
> /* Is this the actual length of the list?
> */
> int len = g_list_length (node);
>
> For efficiency reasons, I can see why the list functions may require
> that the 'list' parameter is the head of the list but, for sake of
> argument, why should some of these functions assume that? Or maybe this
> policy should just be reiterated in the documentation somewhere.
Apparently, prepending to a list element inserts just before the element, correctly setting new_list->prev and list->prev->next. Only for doubly linked lists of course. What wacky behaviour!
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]