КЛИСТ предположительно круговой? Отсюда GetHeadPosition
?
В любом случае NSArray
(или NSMutableArray
в этом случае, поскольку вы хотите вставить) - это обычный способ сохранить упорядоченные списки в Objective-C.
Для RemoveAt
используйте removeObjectAtIndex:
. Для GetAt
используйте objectAtIndex:
. Для InsertBefore
вы, вероятно, захотите написать что-то вроде:
- (void)insert:(id)objectToInsert before:(id)referenceObject
{
int index = [array indexOfObject:referenceObject];
if(index == NSNotFound) return; // or whatever you'd expect.
// Maybe object is just inserted at the end?
index = index - 1;
if(index < 0) index = [array count];
[array insertObject:objectToInsert atIndex:index];
}
(что, вероятно, будет лучше в категории NSArray, но вы получите точку)
Для GetNext
и GetHeadPosition
вы, вероятно, хотите сохранить позицию массива в отдельной переменной. Так для GetNext:
arrayPosition = (arrayPosition + 1)%[array count];
return [array objectAtIndex:arrayPosition];
А для GetHeadPosition просто:
return arrayPosition;
РЕДАКТИРОВАТЬ: для итерации NSArray, самый простой способ на самом деле игнорировать что-либо явное и просто использовать:
for(ObjectType *object in array)
{
/* do something with object */
}
Как правило, это означает, что вам на самом деле не нужен аналог GetNext, но вы не можете изменить массив во время этого цикла, поэтому он не всегда может использоваться.