Я не знаю, подходит ли заголовок к проблеме, но я думаю, что моя проблема заключается в том, как правильно передать указатели в функции.Итак, у меня есть связанный список, на который указывает head;
Давайте представим, что у меня есть этот связанный список, на который указывает head: {1, 2, 3, 4, 5, NULL} Я вызываю функцию NextNode (head), и я даю список, результатом будет то, что head указывает на 2. Мне бы хотелось, чтобы в следующий раз, когда я вызывал функцию, у меня должен был быть результат, указывающий на 3. И т.д. Я хотел бы, чтобы, когда функциявызывается, следующий узел не всегда должен быть head-> next, но он должен продолжаться.
У меня есть функция, которая принимает в качестве параметра голову;
struct node
{
int val;
node*next;
}
node * create()
{
node*tmp;
node *head;
for (int i = 1; i<6; i = i + 1)
{
tmp = new node;
tmp->val = i;
tmp->next = head;
head = tmp;
}
return head;
}
node* NextNode(node*current)
{
if (somethingHappens)
{
current = current->next; //this is wrong. Because it's important to not lose the pointer of head;
}
return current;
}
int main()
{
node* result;
node* another;
node* head;
head = create();
result = NextNode(head);
std::cout << result->val << std::endl;
//I call again the function, giving always as paramter the head pointer
another = NextNode(head);
std::cout << another->val << std::endl;
return 0;
}
Так что result-> val должен дать 2 как результат, а other-> val должен дать 3. Но, очевидно, это не такпроисходит, потому что голова исправлена.Есть ли другой способ, которым я могу сделать это?Код является псевдокодом того, что я хотел бы сделать.Надеюсь, я был ясен, английский не мой родной язык, поэтому, пожалуйста, будьте терпеливы.