Циркулярно связанные списки часто реализуются с использованием массивов, что делает их очень быстрыми и по своей природе не требует динамического изменения размера. Вам просто нужно быстро проверить индексы чтения и записи, чтобы увидеть, не упали ли они с конца, и если да, сбросить его на ноль (или один, что угодно).
Однако они обычно используются для таких вещей, как входные буферы, где данные не имеют реального значения после прочтения. Списки контактов имеют длительную ценность, и новые контакты будут перезаписывать старые контакты после заполнения списка, что может быть хорошо, если вы не перезапишете свою бабушку, которая оставляет вам кучу денег в ее завещании.
Я не думаю, что связанный список - это самый эффективный способ создания кольцевого буфера (оригинальный вопрос).
Целью циклического буфера является скорость, и массив просто нельзя превзойти по скорости в контексте циклического буфера. Даже если вы сохраните указатель на свой последний связанный элемент списка ссылок, массив все равно будет более эффективным. Списки имеют возможности динамического изменения размера (накладные расходы), которые не нужны для циклических буферов.
Сказав это, я думаю, что кольцевой буфер, вероятно, не является правильной структурой для приложения (списка контактов), о котором вы упомянули.