Автор Renzo задал вопрос в разделе Другие языки и технологии
Списки в Си. Подскажите, пожалуйста, сайт, где доступно и понятно изложена тема линейных списков на Си (не ++) и получил лучший ответ
Ответ от CODEMASTER[гуру]
односвязный циклический список это как бы рукурсивное объявление струкутыр, точнее указателя на нее в самой структуре. типа:
struct s{
int data;//поледанных
s *next;//следующий элемент
} *first,*curr;//первый и текущий элемент
инициализируешь так:
first=new s;
curr=new s;
first->next=curr;
чтобы получить первый элемент используй first->data
чтобы добавить новый элемент:
curr->next=new s;
curr=curr->next;//переходишь к последнему
и чтобы получить например 50 элемент через цикл перебирай список:
curr=first;//переход к первому
for(int i=0;i<50;i++)
{
if(curr->next!=NULL)
{
curr=curr->next;
}
}
и используй curr->data.
т. е. структура содержит указатель на следующий элемент
Источник: опыт
Книжка "Pointers on C", PDF, 61 метр --
А нафига сайт?
Просто делаешь структуру в которой один из элементов является указателем на следующую в списке или NULL в концевом
и по ходу дела наращиваешь выделяя место в памяти командой malloc и присваивая указатели. и держать отдельно указатеь на первую
(линейные не советую. Жрут много ресурсов проца на пробегание от начала до нужного. Лучше двусвязные - держать в структуре указатели и на следующий и на предидущий. Чуть больше затрат памяти, но в десятки раз меньше затрат проца)
-------------
Для кодемастера
не путай С и С++
в С нет new