Main Page   Modules   Alphabetical List   Data Structures   File List   Data Fields   Globals  

DoubleLinkedLists.c

Go to the documentation of this file.
00001 /* Double linked lists. */
00002 
00013 #include <stdlib.h>
00014 #include "LinkedLists.h"
00015 
00016 
00018 
00021 void InvertDoubleList(DoubleNodePtr *doubleLinkedListPtr)
00022 {
00023   DoubleNodePtr curNode = *doubleLinkedListPtr, copyPtr;
00024   while (1)
00025   {
00026     copyPtr = curNode->next;
00027     curNode->next = curNode->prev;
00028     curNode->prev = copyPtr;
00029     if (!copyPtr)
00030       break;
00031     curNode = copyPtr;
00032   }
00033   *doubleLinkedListPtr = curNode;
00034 }
00035 
00037 /*
00038   \see FindLast()
00039 */
00040 UInt32 FindFirst(DoubleNodePtr linkedList, DoubleNodePtr* first)
00041 {
00042   DoubleNodePtr curNode;
00043   UInt32 nbrNodes = 0;
00044   for (curNode = linkedList; curNode->prev; curNode = curNode->prev)
00045     nbrNodes++;
00046   if (first)
00047     *first = curNode;
00048   return (nbrNodes + 1);
00049 }
00050 
00052 /*
00053   Fills the 'prev' values based on the single linked list given
00054   by the 'next' values.
00055 */
00056 void FillPrev(DoubleNodePtr linkedList)
00057 {
00058   DoubleNodePtr prev = NULL, curNode = linkedList;
00059   while (curNode)
00060   {
00061     curNode->prev = prev;
00062     prev = curNode;
00063     curNode = curNode->next;
00064   }
00065 }
00066 

Generated on Sun Dec 23 15:20:37 2001 for ANet by doxygen 1.2.12 written by Dimitri van Heesch, © 1997-2001

SourceForge
Logo