異なる構造に対して単一の関数(addnode)を作成する方法はありますか?私はこのシナリオを持っています:
typedef struct linkedlist_a *ptr_a;
typedef struct linkedlist_a
{
/* content */
ptr_a next;
} listA;
typedef struct linkedlist_b *ptr_b;
typedef struct linkedlist_b
{
/* content */
ptr_b next;
} listB;
listA *listA_addnode( listA *head, listA *node )
{
listA *temp = head;
if( temp == NULL )
{
temp = node;
}
else if( temp -> next == NULL )
{
temp -> next = node;
}
else
{
while( temp -> next ) temp = temp -> next;
temp -> next = node;
}
return head;
}
listB *listB_addnode( listB *head, listB *node )
{
listB *temp = head;
if( temp == NULL )
{
temp = node;
}
else if( temp -> next == NULL )
{
temp -> next = node;
}
else
{
while( temp -> next ) temp = temp -> next;
temp -> next = node;
}
return head;
}
2つの構造がある場合は、2つの関数を記述しても問題ありませんが、2つを超える場合は、どうすればよいですか?