массив в режиме стека
- Войдите на сайт для отправки комментариев
Вс, 27/09/2015 - 19:10
всем привет.
народ подскажите, можноли реализавать следущее
без использования постоянной перетусовки массива.
имеем массив с размерностью 10 для хранения переменных типа интегер,
используется в качестве стека (первым пришол первым уйдеш),
тобиш добавляем в последнюю ячейку а берем из первой .
сечас все работает но постоянно приходится перемещать все елементы массива в цикле ,
может есть возможность не использовать постоянный сдвиг в цикле а воспользоватся чем то другим , возможно указателями .
как эту задачу правильно реализовать ?
Не понял в чём проблема. Заведите всё что угодно - индекс следующего пустого места или указатель на него. При добавлении этот индекс/указатель инкрементируйте, при удалении элемента декремнтируйте, проблема-то в чём?
Очередь: указатель устанавливается на первый элемент, при добавлении - указатель инкременируетсяя, при вычитании - декременируется. Данные берутся начиная с первого элемента и до указателя.
Стек: указатель устанавливается на последний элемент, при добавлении - указатель декременируется, при вычитании - инкременируется. Данные берутся с указателя.
"Первым пришел первым уйдеш" - это не стек, а FIFO. По-нашему точно не скажу, но скорее всего очередь.
Хотя, смысла это не меняет. Всё как написал ЕвгенийП - записываете и читаете массив по указателю или по индексу. Только, в отличие от стека, здесь указателей должно быть два, отдельных - для записи и чтения.
А вообще, при таком небольшом размере массива, может и не стоит с этим заморачиваться. Двигать указатели, и постоянно проверять их на выход за допустимые границы - операция не такая уж быстрая.
-----
Gippopotam, опередил! :)