Быстрый циклический массив - PullRequest
0 голосов
/ 22 ноября 2011

Я должен реализовать циклический массив.Использование памяти не имеет значения, мне просто нужно как можно меньше заниматься арифметикой.Мой лучший способ сделать это:

  1. Создать массив T[L]
  2. Создать массив S[L+2]
  3. Заполнить S вот так

    S[0]   = L-1
    S[L+1] = 0
    S[i+1] = i, i=0,1...L-1
    
  4. Тогда

    T[x] = T[S[x+1])
    T[-1] = T[S[0]]   = T[L-1] // last element
    T[L]  = T[S[L+1]] = T[0]   // first element
    
  5. Например:

    T[-1] = T[S[1]]   = T[L-1] // last element
    T[L]  = T[S[L+1]] = T[0]   // first element
    
...