struct JobMan
{
char FName[8]; // ima
char LName[12]; // fam
char OName[12]; // otch
int tabNum; // tabelniy nomer
int WorkTime; // otrabotanie chasi
JobMan *Next;
};
[C++] Односвязный список
Код:
Код:
void CreateList(JobMan *First)
{
fDB = fopen("test.dat", "rb");
rewind(fDB);
First = NULL;
while (fread(&Man, sizeof(Man), 1, fDB))
{
JobMan *tek = new JobMan;
tek = &Man;
tek->Next = NULL;
if (First == NULL)
First = tek;
else
{
tek1 = First; // тут ищем место вставки
pred = NULL;
while ((tek1 != NULL) && (tek->WorkTime < tek1->WorkTime))
{
pred = tek1;
tek1 = tek1->Next;
}
if (tek1 == First) // вставка в начало
{
tek->Next = First;
First = tek;
}
else
{
tek->Next = pred->Next; // вставка после pred
pred->Next = tek;
}
}
}
fclose(fDB);
}
{
fDB = fopen("test.dat", "rb");
rewind(fDB);
First = NULL;
while (fread(&Man, sizeof(Man), 1, fDB))
{
JobMan *tek = new JobMan;
tek = &Man;
tek->Next = NULL;
if (First == NULL)
First = tek;
else
{
tek1 = First; // тут ищем место вставки
pred = NULL;
while ((tek1 != NULL) && (tek->WorkTime < tek1->WorkTime))
{
pred = tek1;
tek1 = tek1->Next;
}
if (tek1 == First) // вставка в начало
{
tek->Next = First;
First = tek;
}
else
{
tek->Next = pred->Next; // вставка после pred
pred->Next = tek;
}
}
}
fclose(fDB);
}
Цитата:
Немогу понять, или с выводом что-то не то, или же не правильно работает
Лично я вывода не вижу.
Цитата:
while (fread(&Man, sizeof(Man), 1, fDB))
Что такое Man? Объект типа структуры JobMan?
tek и tek1 - очень информативные имена переменных.
З.Ы. В алгоритм сортировки не въехал :)
Цитата: Fenja
Лично я вывода не вижу.
Что такое Man? Объект типа структуры JobMan?
tek и tek1 - очень информативные имена переменных.
З.Ы. В алгоритм сортировки не въехал :)
Что такое Man? Объект типа структуры JobMan?
tek и tek1 - очень информативные имена переменных.
З.Ы. В алгоритм сортировки не въехал :)
Да, JobMan Man. Сортировка тут идет методом вставки меньшего элемента вперед списка.
Вобщем я переделаю. Мне нужно 2 структуры создать. 1 - это Man, а во второй уже сам список + указатель на Man.
Сортировка делается методом пузырька, аналогично массивам, только надо связи правильно настроить при сортировке и всего делов не о чем :)
Трабла была в указателях. Прошелся дебагером выцыпил ошибку)) Но все равно нужно сделать 2 структуры, а то писать в файл еще и указатель (*Next) ни к чему я думаю.
Цитата: xface
Трабла была в указателях. Прошелся дебагером выцыпил ошибку)) Но все равно нужно сделать 2 структуры, а то писать в файл еще и указатель (*Next) ни к чему я думаю.
Зачем 2 структура?? Я не понял:)
Код:
while (fread(&Man, sizeof(Man), 1, fDB))
{
JobMan *tek = new JobMan;
tek = &Man;
tek->Next = NULL;
{
JobMan *tek = new JobMan;
tek = &Man;
tek->Next = NULL;
у тебя вообще считывает с файла??? Я чего то не вижу откуды это делается! Судя по твоему коду должны паразитные записи вылезать:)
Код:
class JobMan
{
char FName[8]; // ima
char LName[12]; // fam
char OName[12]; // otch
int tabNum; // tabelniy nomer
int WorkTime; // otrabotanie chasi
}
{
char FName[8]; // ima
char LName[12]; // fam
char OName[12]; // otch
int tabNum; // tabelniy nomer
int WorkTime; // otrabotanie chasi
}
и клас-нода листа:
Код:
class Node
{
JobMan* data;
Node* next;
}
{
JobMan* data;
Node* next;
}
Так, я думаю, будет более логично.