我有一些基于链表的 ADT。我的许多函数使用以下算法来查找某些特定的列表元素:
currentElement = listGetFirst(list)
while (currentElement != neededElement)
{
currentElement = listGetNext(list);
}
现在我想编写 2 个函数来保存内部迭代器并将其恢复,如下所示:
void listSaveIterator(List list, ListElement *iterator)
{
*iterator = listGetCurrent(list);
}
void listRestore(List list, ListElement iterator)
{
ListElement element = listGetFirst(list);
while (element != NULL)
{
if (element == iterator)
{
return;
}
element = listGetNext(list);
}
}
这行得通吗?有更好的方法吗?