Пройдите по списку, начиная с конца и к центру - PullRequest
0 голосов
/ 20 апреля 2020

Предположим, у меня есть такой список:

[4, 5, 7, 2, 3, 1, 9]

Я хочу, чтобы обход был таким:

4, 9, 5, 1, 7, 3, 2

Может кто-нибудь поделиться решением для этого? Решением может быть языковая независимость c - даже с псевдокодом все в порядке.

Одно из решений, которое я имею в виду, состоит в создании элементов очереди с двумя окончаниями и очереди из альтернативных концов. Но проблема в том, что я хочу просмотреть этот список несколько раз, и удаление из очереди удалит эти элементы для будущего использования. Есть ли какое-либо другое решение, которое может помешать мне делать копию очереди каждый раз, прежде чем перейти в желаемом порядке?

1 Ответ

1 голос
/ 20 апреля 2020

Как насчет:

i = 0;
j = arr.size() - 1;

while(i < j){
    print(arr[i++]);
    print(arr[j--]);
}
// center still needs to be printed
if(i == j){
    print(arr[i]);
}
...