PDA

Показать полную графическую версию : C/C++ связные списки, наверно


stavskiys
21-12-2006, 11:36
Скажу сразу, до этого времени на си никогда не писал. Был опыт в Pascal, Delphi, JavaScript, php.

Мне нужно написать программку именно на си (не на С++), которая будет позволять добавлять записи, типа

char name[15];
int size;

их сортировку по size;вывод; сохранения в файл; чтение из файла.
т.е. принцип такой, запускается программа ==> запрос ввода команды ==> в зависимости от команды выполняются требуемые действия (добавление, сортировка, сохранение, вывод).

У меня вся сложность с неизвестным количеством вводимых данных, для чего я так полагаю, используются связанные списки в си. Если бы я писал на паскале, я бы использовал динамические массивы или после каждого добавления сохранял в файл.

Как на си работать со связанными списками: объявлять, добавлять записи, перемещаться по списку и т.д? Нужен пример с коментами.
К книгам просьба не отправлять.

Спасибо.

A_Vodka
16-01-2007, 00:41
Все тоже, только вместо new -- malloc

suxxl
24-01-2007, 14:30
может быть так?
class CLink
{
public:
char szName[15];
int nSize
CLink* pNext;
}; //связанный список собсна

CLink* pHead;// указатель на головной элемент списка

void addElem(CLink* pLC) //добавить элемент
{
CLink* pCur = pHead; //присваиваем значение головного списка к текущему (по хорошему нужно было бы сделать проверку, а не является ли головной элемент нулевым, тогда туда и записывали б
while(pCur->pNext != (CLink*)0) //тут понятно. пока не наткнулись на пустой элемент
{
pCur = pCur->pNext;
pCur->pNext = pLC;
pLC->pNext = (CLink*)0;//ясно, добавили элемент и обнулили последний
}
}

сортировку, удаление по аналогии можно самому написать
может где то ошибся - писал на скоруу руку, но принцип понятен.




© OSzone.net 2001-2012