Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   C/C++ связные списки, наверно (http://forum.oszone.net/showthread.php?t=76507)

stavskiys 21-12-2006 11:36 527470

C/C++ связные списки, наверно
 
Скажу сразу, до этого времени на си никогда не писал. Был опыт в Pascal, Delphi, JavaScript, php.

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

char name[15];
int size;

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

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

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

Спасибо.

A_Vodka 16-01-2007 00:41 536595

Все тоже, только вместо new -- malloc

suxxl 24-01-2007 14:30 540598

может быть так?
Код:

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;//ясно, добавили элемент и обнулили последний
 }
}

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


Время: 13:07.

Время: 13:07.
© OSzone.net 2001-