On Tue, 1 Aug 2006, Christopher Spears wrote:
> I've been working through a tutorial: > http://www.ibiblio.org/obp/thinkCSpy/index.htm. Lately, I have been > learning about abstract data types (linked lists, stacks, queues, trees, > etc.). While I do enjoy the challenge of creating these objects, I am > not sure what they are used for. Hi Chris, Let say that we are trying to write a navigator program, one that helps plan road trips. One portion of the input to this program would be a map of the roads. For example: map = [('a', 'b'), ('a', 'c'), ('c', 'f'), ('b', 'd'), ('d', 'e'), ('d', 'f')] might represent the following street map: a ------ b | | | | c d ------ e \ | \ | ----- f where 'a', 'b', 'c', 'd', 'e', and 'f' are points of interest. (I'm oversimplifying, but I hope you don't mind!) A simple question we might ask this system is: how far is it from point 'a' to point 'f'? We'd like to ask the system: distance('a', 'f', map) and be able to get 2, since there's a hop from 'a' to 'c', and from 'c' to 'f'. This problem is ripe to be attacked with an algorithm called "breadth-first search", and breadth-first search typically is implemented by keeping a queue of places. We can talk about this in more detail if you'd like. http://en.wikipedia.org/wiki/Breadth-first_search This is a long hand-wavy example for a short explanation: queues and and other data structures are "background" support tools: they themselves aren't so interesting, but they're the tools that a programmer often will reach for when working on non-string related problems. If you remember Starcraft: there was a four-level queue of movement commands that you could set up by holding "shift" while navigating your forces. You could also "queue" up production orders in factories. Same data structure. *grin* Best of wishes! _______________________________________________ Tutor maillist - [email protected] http://mail.python.org/mailman/listinfo/tutor
