Can double-linked lists be implemented in python?

Dave Kuhlman dkuhlman at
Wed Apr 2 19:45:37 CEST 2003

Peter Hansen wrote:

> Robin Munn wrote:
>> sdieselil <sdieselil at> wrote:
>> > Hi
>> >
>> > How can I implement double-linked lists and other complex tree-like
>> > structures in Python?
>> Do you *need* doubly-linked lists? Is there something that Python's
>> builtin list type can't do for you? Consider whether it's worth taking
>> the time to code up a data structure, with all the attendant edge cases,
>> when you've already got such nice useful builtin types...
> I can think of at least one example where one would *need* doubly-linked
> lists... a homework assignment.  ;-)

But suppose that I *do* implement double linked lists.  I'll have two 
objects that point at each other, in other words circular references.

In older versions of Python, circular references were not garbage collected.  
Is this still true in Python 2.2 and 2.3?  Do I need to use the gc module 
to *enable* garbage collection?  Or, is not *disabling* it good enough?  Do 
I still need to worry about this?  And, suppose you tell me that circular 
references are collected but I don't believe you.  How can I check?

After reading the documentation on the gc module ("3.2 gc --  Garbage 
Collector interface" in the Python Library Reference), I *think* I 
understand this, but am not sure.  Is there a document that explains this?  
I could not find one at  For those of us who want to 
promote Python, it would be nice to have a document that we could point to 
and say, "See. Problem solved. Nothing to worry about."

  - Dave

Dave Kuhlman
dkuhlman at

More information about the Python-list mailing list