00001
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
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
00054
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