次の構造を持つノードで構成される単一リンク リストがあります。
struct date
{
int day, month, year;
};
struct Node
{
string item;
date Exp;
int count;
Node *link;
};
typedef Node* NodePtr;
有効期限を検索すると、検索すると他のすべてのノードが表示されますが、最初のノードは表示されません。これは、ノードの順序も変更したときに発生します。単純なミスですか?
ノードの検索に使用する関数は次のとおりです。
NodePtr search_date(NodePtr head, int month, int day, int year)
{
// Point to the head node
NodePtr here = head;
// If the list is empty nothing to search
if (here == NULL)
return NULL;
// Search for the item
else{
//while you have still items and you haven't found the target yet
while (here-> Exp.day != day &&
here-> Exp.month != month &&
here->Exp.year != year &&
here->link != NULL)
here = here->link;
// Found the target, return the pointer at that location
if (here-> Exp.month == month &&
here-> Exp.day == day &&
here-> Exp.year == year)
return here;
// Search unsuccessful, return Null
else
return NULL;
}
}