- •Связанные структуры
- •Void dop1 ( stack*&s )
- •Int cht ( stack *s )
- •Int cht1 ( stack *s )
- •Void main ( )
- •Очередь
- •Void main ( )
- •Функции списка
- •Void print(spisoc st)
- •Void print1(spisoc st)
- •Void dop (spisoc*&s, spisoc*st)
- •Void dop1 (spisoc*&s)
- •Void cht(spisoc*s)
- •Void cht1(spisoc*s)
- •Void poisk (spisoc*s, int year)
- •Void poisk1 (spisoc*s, int year)
- •Void ud (spisoc*&s, int year)
- •Void ud1 (spisoc*&s,int year)
- •Void osv (spisoc*&s)
- •Void main()
Void dop1 (spisoc*&s)
{ spisoc*list,*pr ;
char c;
do
{ // тело цикла
cout<<"Для ввода данных нажмите любую клавишу и Esc –“
“если ввод производить не надо \n ";
get(c);
// если символ отличен от символа Esc
if(c!=27){
list = s; // устанавливаем текущий указатель на вершину списка
pr=0; // устанавливаем вспомогательный указатель на 0
spisoc*stnew=new(spisoc); // выделяем память на новую структуру
cout<<"Введите данные структуры\n"
<<"Название:" ;stnew->name=new char [90]; //выделяем память
cin.getline(stnew->name,90); // вводим строку -название
cout<<"\nАвтор:" ;stnew->author=new char[50];
cin.getline(stnew->author,50);
cout<<"Год издания:";cin>>stnew->year; // вводим число - год
cin.ignore(80,'\n'); // игнорируем пробелы и извлекаем Enter
// структура введена долее аналогично предыдущей функции
while(list && (strcmp(list->name,stnew->name)<=0))
{ pr=list; list=list->next;};
stnew->next=list;
if(pr= =0) s=stnew;
else pr->next=stnew;
}
// в противном случае, если символ равен Esc
} // завершение тела цикла
while(c!=27); // пока символ отличен от Esc повторяем тело цикла
}
//Функция чтения списка, использующая цикл для продвижения
//по списку
Void cht(spisoc*s)
{ cout<<"\n\nСтруктуры списка :";
count=0; // устанавливаем нумерацию структур на 0
spisoc*list=s; // установка текущего указателя на вершину
if(list= =0) cout<<"\nСписок пуст";
else
while(list) // пока list отличен от нуля
{
print( *list); // выводим структуру
list=list->next; // переходим к следующей структуре
} // тело цикла while
count=0; // опять нумерация структур- внешняя переменная
//устанавливается на ноль
}
//----------------------------------------------------------------------------------
// Функция чтения списка, использующая рекурсию
Void cht1(spisoc*s)
{
if(s!=0)
{ print( *s); // выводим структуру вершины
if ( s->next !=0) // если указатель на следующую структуру //ненулевой
cht1( s->next); // вызываем функцию, в которую в качестве вершины
// передаем следующую структуру
}
else cout<< “Список пуст” ;
}
//------------------------------------------------------------------------------------
//Функция поиска структуры первой попавшейся в списке, у которой //поле - год издания совпадает с параметром
Void poisk (spisoc*s, int year)
{ spisoc*list=s; // установка текущего указателя на вершину
if(list==0) cout<<"\nСписок пуст";
else {
while (list&&list->year!=year) //пока не достигнем ноль или не
// найдем структуру, у которой совпадает поле с
// параметром
list=list->next; // продвигаемся по списку
//если цикл завершился, при достижении нуля, нужной структуры
// нет в списке, в противном случае выводим эту структуру
if(list==0) cout<<"Элемент не найден";
else {cout<<"\n\n Результат поиска :";print1 (*list);}
}
}
//-----------------------------------------------------------------------------------
// Функция вывода всех структур, у которых совпало значение поля с //параметром
