2011-11-21 5 views
0

Я выполнил очередь в C. Я могу добавлять и удалять элементы. Теперь мне нужно реализовать функцию, которая сравнивает каждый новый элемент с суммой последних 86 элементов в очереди. Например, каждый из первых n элементов, n < = 86, я сравниваю с суммой первых n-1 элементов, но 87-й элемент мне приходится сравнивать с суммой из последних 86 элементов. Как я могу это сделать?Как работать с очередью

Можете ли вы дать мне несколько указаний о том, как я должен думать (может быть, какое-то чтение или что-то еще)? Я просто хочу понять это.

Спасибо.

+0

У каждого элемента очереди есть 430 дополнительных элементов или у вас есть 86 очередей? –

+0

Уточните, что вы хотите сделать. – bitmask

ответ

1

Если я правильно понимаю, вы хотите добавить в очередь 430 элементов, и вы хотите сравнить каждый новый элемент с суммой 86 «последних» элементов в очереди, но игнорировать старые элементы в очереди.

Что бы я делал, это поддерживать общее количество и добавлять к нему каждый раз, когда вы добавляете элемент в очередь, но также используете отдельную очередь, которая будет отслеживать последние 86 элементов, добавленных в реальную. При добавлении первого элемента 86 в основном у вас будет две копии очереди. Для 87-го и последующих элементов вы удалите самый старый элемент из очереди «новейших 86» и вычтите его значение из текущей суммы.

Смежные вопросы