struct NodeRec
{
int data;
struct NodeRec* next;
};
typedef struct NodeRec Node;
struct ListOfInt
{
Node* head;
Node* current;
};
void LOI_Initialize(ListOfInt* list);
void LOI_InsertBefore(ListOfInt* list, int data);
void LOI_InsertAfter(ListOfInt* list, int data);
void LOI_DeleteCurrent(ListOfInt* list);
int LOI_First(ListOfInt* list);
int LOI_Next(ListOfInt* list);
struct NodeRec
{
StudRec data;
struct NodeRec* next;
};
typedef struct NodeRec Node;
struct ListOfStudec
{
Node* head;
Node* current;
};
void LOSR_Initialize(ListOfStudRec* list);
void LOSR_InsertBefore(ListOfStudRec* list, StudRec data);
void LOSR_InsertAfter(ListOfStudRec* list, StudRec data);
void LOSR_DeleteCurrent(ListOfStudRec* list);
StudRec LOSR_First(ListOfStudRec* list);
StudRec LOSR_Next(ListOfStudRec* list);
#define
to abstract the
common structure:
#define DECLARE_LIST_OF(TYPE, PREFIX) \
\
struct NodeFor##TYPE##Rec \
{ \
TYPE data; \
struct NodeFor##TYPE##Rec* next; \
}; \
\
typedef struct NodeFor##TYPE##Rec NodeFor##Type; \
\
struct ListOf##TYPE \
{ \
NodeFor##TYPE* head; \
NodeFor##TYPE* current; \
}; \
\
void PREFIX##_Initialize(ListOf##TYPE* list); \
void PREFIX##_InsertBefore(ListOf##TYPE* list, TYPE data); \
void PREFIX##_InsertAfter(ListOf##TYPE* list, TYPE data); \
void PREFIX##_DeleteCurrent(ListOf##TYPE* list); \
TYPE PREFIX##_First(ListOf##TYPE* list); \
TYPE PREFIX##_Next(ListOf##TYPE* list);
DECLARE_LIST_OF(int,LOI)
DECLARE_LIST_OF(StudRec,LOSR)
int max_int(int a, int b)
{
if (a<b) { return b; }
else { return a; }
}
float max_float(float a, float b)
{
if (a<b) { return b; }
else { return a; }
}
#define DEFINE_MAX(TYPE) \
TYPE max_##TYPE##(TYPE a, TYPE b) \
{ \
if (a<b) { return b; } \
else { return a; } \
}
DEFINE_MAX(int)
DEFINE_MAX(float)
DEFINE_MAX(double)
typedef char* cp;
DEFINE_MAX(cp)
char* max_cp(char* a, char* b)
{
if (a<b) { return b; }
else { return a; }
}
"I don't want to achieve immortality through my work.
I want to achieve immortality by not dying"
This material is part of the CSE2305 - Object-Oriented
Software Engineering course.
Copyright © Jon McCormack & Damian Conway, 1998-2005. All rights
reserved.