Trying to create a double linked list nd have the following
Code:
typedef struct Numbers
{
int Num;
struct Numbers *Next;
struct Numbers *Previous;
} Number;
Number * GetMemory();
void CreateHead( Number *, int );
void CreateNode( Number *, int );
void AppendtoList( Number *, Number *, int );
void ReadList( Number * );
void DistroyList( Number * );
int main()
{
Number *Head = NULL, *Tail = NULL;
for ( int RecNum = 1, i = 0; i < 10; i++ )
{
AppendtoList( Head, Tail, RecNum );
RecNum++;
}
ReadList( Head );
DistroyList( Tail );
return 0;
}
Number * GetMemory()
{
return ( Number * ) malloc ( sizeof( Number ) );
}
void CreateHead( Number *Tmpptr, int x )
{
Tmpptr->Num = x;
Tmpptr->Next = NULL;
Tmpptr->Previous = NULL;
}
void CreateNode( Number *TmpPtr, int x)
{
TmpPtr = GetMemory();
TmpPtr->Previous = NULL;
TmpPtr->Next = NULL;
TmpPtr->Num = x;
}
void AppendtoList( Number *HPtr, Number *TPtr, int x )
{
if ( HPtr == NULL )
{
HPtr = GetMemory();
if ( HPtr != NULL )
{
CreateHead( HPtr, x );
TPtr = HPtr;
}
else
{
printf("error getting memory!\n");
}
}
else
{
CreateNode( TPtr->Next, x );
if ( TPtr->Next != NULL )
{
TPtr->Previous = TPtr;
TPtr = TPtr->Next;
}
else
{
printf("error getting memory! Record not created \n");
}
}
}
The head record is created as in i get a memory address but when it returns to the main program its back to null.