Вот как я определил и инициализировал связанный список
struct listrec
{
struct listrec *prev;
float value;
struct listrec *next;
};
listrec *head, *tail;
int main() {
int number;
cin >> number;
float content = 2.0;
for (float i = 0; i < number; i++)
{
if (i == 0)
{
head = new listrec;
head->prev = nullptr;
head->value = 1.0;
head->next = nullptr;
tail = head;
}
else
{
auto *newNode = new listrec;
newNode->value = content++;
newNode->next = nullptr;
newNode->prev = tail;
tail->next = newNode;
tail = tail->next;
}
}
return 0;
}
Так выглядит связанный список
Мне нужно " написать функцию, которая принимает два входных параметра - головку указателя ИЛИ хвост, а также параметр направления, по которому необходимо пройти - чтобы пройти по связанному списку и вернуть количество элементов в списке. "
Я понятия не имею, как написать такую функцию…
Я знаю, если я хочу посчитать количество элементов из первого узла, то я могу написать такую функцию:
float listSize(listrec* head)
{
int count = 0;
listrec* current = head; // Initialize current
while (current != NULL)
{
count++;
current = current->next;
}
return count;
}
Или, если я хочу сосчитать элементы из последнего элемента, то
float listSize2(listrec* tail)
{
int count = 1;
listrec* current = tail;
while (tail->prev != NULL)
{
count++;
tail = tail->prev;
}
return count;
}
Но как мне объединить эти два? Любые советы будут оценены!