//---------------------------------------------------------------------------
#include <vcl.h>
#include <conio.h>
#include <stdlib.h>
#include <fstream.h>
#include <iostream>
#pragma hdrstop
typedef struct
{
char fam[15];
char name[15];
int god;
int ser;
int nom;
float money;
} Tkadr;
typedef Tkadr TMaskadr[50];
typedef struct TListkadrTag
{
TListkadrTag *next;
char fam[15];
char name[15];
int god;
int ser;
int nom;
float money;
} TListkadr;
//---------------------------------------------------------------------------
#pragma argsused
TMaskadr MAS;
//TListkadr *PListkadr;
TListkadr *PList;
TListkadrTag *p;
void qsort1(TMaskadr &item, int left,int right)
{
int i,j,k;
int comp;
Tkadr buf;
i=left; j=right;
k= (left+right)/2;
comp=item[k].ser; // Компаранд
do {
while(item[i].ser<comp && i<right)
i++;
while(comp<item[j].ser && j>left)
j--;
if(i<=j) {
buf=item[i]; // Обмен
item[i]=item[j];
item[j]=buf;
i++; j--;
}
} while(i<=j);
if(left<j)
qsort1(item,left,j); // Рекурсивный вызов
if(i<right)
qsort1(item,i,right);
}
//---------------------------------------------------------------------------
TListkadr* AddItemToEnd(TListkadr* PList, Tkadr MAS_i){
TListkadr *PNewItem, *Next;
Next = PList;
if (Next) {
while(Next->next)
Next=Next->next;
PNewItem = new TListkadr;
Next->next= PNewItem;
StrCopy(PNewItem->fam, MAS_i.fam);
StrCopy(PNewItem->name, MAS_i.name);
PNewItem->god=MAS_i.god;
PNewItem->ser=MAS_i.ser;
PNewItem->nom=MAS_i.nom;
PNewItem->money=MAS_i.money;
PNewItem->next=NULL;
return PList;
}
else {
PNewItem = new TListkadr;
StrCopy(PNewItem->fam, MAS_i.fam);
StrCopy(PNewItem->name, MAS_i.name);
PNewItem->god=MAS_i.god;
PNewItem->ser=MAS_i.ser;
PNewItem->nom=MAS_i.nom;
PNewItem->money=MAS_i.money;
PNewItem->next=NULL;
return PNewItem;
}
delete PNewItem;
delete Next;
}
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
char imya;
ifstream file("kadr.txt", ios_base::in); // открыли файл для чтения
int i=0;
while(!file.eof()){
file >> MAS[i].fam >> MAS[i].name >> MAS[i].god >> MAS[i].ser>>
MAS[i].nom>>MAS[i].money;
++i;
}
for (i = 0; i<= 4; i++){
printf("fam=%s name=%s god=%d ser=%d nom=%d money=%.2f\n",
MAS[i].fam, MAS[i].name, MAS[i].god, MAS[i].ser, MAS[i].nom, MAS[i].money);
}
qsort1(MAS, 0, 4);
printf("\nSorirovka po serii pasporta:\n");
ofstream book_file("Qsort.txt");
for (i = 0; i <= 4; i++)
{printf("fam=%s name=%s god=%d ser=%d nom=%d money=%.2f\n",
MAS[i].fam, MAS[i].name, MAS[i].god, MAS[i].ser, MAS[i].nom, MAS[i].money);
//Сохранение полученных данных в созданный файл
book_file << "Фамилия "<<MAS[i].fam<<" Имя "<<MAS[i].name<<" Год "
<<MAS[i].god<< " Серия "<<MAS[i].ser
<< " Номер "<<MAS[i].nom<<" Зарплата "<<MAS[i].money<<endl;
}
for (i = 0; i <= 4; i++)
PList = AddItemToEnd(PList, MAS[i]);
}
getche();
return 0;
}
//---------------------------------------------------------------------------
Последовательный поиск в односвязном списке
Помогие написать блок для последовательного поиска по отсортированному списку
Код:
TListkadr* Poisk(TListkadr* PList, int d)
{
TListkadr *cur;
cur=PList;
while(cur!=NULL && cur->god>=d)
{
if(cur->god==d)
{ printf("fam=%s name=%s god=%d ser=%d nom=%d money=%.2f\n",
PList->fam, PList->name, PList->god, PList->ser, PList->nom,
PList->money);
return cur;
}
}
//printf("Element %d ne naiden \n", d);
return NULL;
}
{
TListkadr *cur;
cur=PList;
while(cur!=NULL && cur->god>=d)
{
if(cur->god==d)
{ printf("fam=%s name=%s god=%d ser=%d nom=%d money=%.2f\n",
PList->fam, PList->name, PList->god, PList->ser, PList->nom,
PList->money);
return cur;
}
}
//printf("Element %d ne naiden \n", d);
return NULL;
}
Издеваешься? А гуглить не пробовал?
И как понять этот момент:
Код:
TListkadr* AddItemToEnd(TListkadr* PList, Tkadr MAS_i){
/*тут сначала создал переменную типа структуры
........
*/
//а тут сразу же ее удалил?!
delete PNewItem;
delete Next;
}
/*тут сначала создал переменную типа структуры
........
*/
//а тут сразу же ее удалил?!
delete PNewItem;
delete Next;
}