struct container
{
 item_t *items;
 size_t items_count;
 size_t max_items_count;
 size_t delta;
}

int container_expand(struct *container)
{
 if(container->items_count < container->max_items_count) return 1;
 return container_resize(container, container->max_items_count + container->delta);
}

とかやっとけばOK
リンクリストはデータがメモリ上に散らばってキャッシュミスが多くなる傾向にあるから
Cの用途を考えるとそうむやみに使うもんでもない。