Я не знаю, может ли вопрос правильно выразить мою проблему, надеюсь, объяснение и код помогут.Английский не мой родной язык, так что наберитесь терпения.И это домашнее задание, поэтому я не могу использовать библиотеку, связанную с STL.Как правильно пройти по связанному списку без цикла while / for, вернуть текущий указатель и дать тот же указатель на функцию?(Может быть, взаимная рекурсия? Я просто говорю, может, моя идея ошибочна).
Давайте представим, что что-то происходит (это внешняя переменная, которая дает мне истину) во время выполнения программы.Как я могу продолжать проходить по одному и тому же списку, не всегда начиная с головы?
С самого начала выполнения программы она должна начинаться с головы, очевидно, но тогда я смогу "вернуть" следующий указатель, а затем следующий.
Давайте представим, что у нас есть список чисел (1, 2, 3, 4, 5, 6, 7);Программа запускается, и я возвращаю указатель, который указывает на 1, и это нормально, во время того же выполнения программы, что-то происходит, и мне нужно вернуть 2, снова, что-то происходит снова, затем функция должна вернуть 3 и т. Д.Как я могу это сделать?Код, который вы видите, является идеей того, что я хотел бы сделать.Я не уверен, что то, что я хотел бы сделать, выполнимо, и если нет, что я могу сделать?
struct node {
int val;
node* next;
};
class random {
public:
node* head = NULL;
node* create() {
node* tmp;
for (int i = 1; i < 8; i = i + 1) {
tmp = new node;
tmp->val = i;
tmp->next = head;
head = tmp;
}
return this->head;
}
bool SomethingHappens() {
if // somethingHappens
return true;
}
node* RightPointer(node* current) {
bool somethinghappened;
somethinghappened = SomethingHappens();
if (somethinghappened) {
current = current->next;
}
return current;
}
};
int main(int argc, char** argv) {
random list;
list.RightPointer(list.head);
return 0;
}