омерів
};
sspisok :: form (void)//процедура формування односпрямованого списку, Q-сам список
//так як спискок кільцевої початок списку позначимо міткою, значенням - 1
{Q=new spisok;//створення самого списку=new spisok;//створення покажчика на початок=new spisok;//створення покажчика на кінець gt; next=EndQ;//початок посилається на кінець gt ; next=NULL;//спісорк посилається в кінець, а кінець в нікуди=BegQ;//список лежить на початку gt; next=EndQ;//слід. ел. посилається в кінець gt; data.kolichestvo_o=NULL;//обнулення полів даних gt; data.kolichestvo_o=NULL;//обнулення полів даних lt; lt; Sozdan spisok lt; lt; endl;
}
sspisok :: add_data (data_ Data)//додавання даних
{spisok * p;//для додавання елемента
//для першого элемента((BegQ-gt;data.kolichestvo_o==NULL)amp;amp;(EndQ-gt;data.kolichestvo_o==NULL))//если список порожній в полях даних
{Q- gt; data=Data;//заповнюємо поле даних gt; next=NULL;//покажчик наступного елемента порожнеча
Додаток А (продовження)
BegQ=Q;//початок списку посилається на список=BegQ;//список переносимо в початок списку=BegQ;//кінець прирівнюємо початку=Q;//кінець списку gt; next=EndQ; //початок посилається на кінець gt; next=NULL;//спісорк посилається в кінець, а кінець в нікуди
}
//для всіх інших ((BegQ == NULL) amp; amp; (EndQ == NULL))
{cout lt; lt; spisok ne sozdan lt; lt; endl;
}
{p=new spisok;//створюємо змінну динамічну gt; data=Data;//в поле даних заносимо дані gt; next=NULL; gt; next=p;//наступний після кінця це доданий елемент =p;//зміщуємо кінець на доданий елемент
};
}
sspisok :: delete_data (long n)//видалення n-ного елементу списку
{spisok * p;//i;//лічильник ((BegQ!=NULL) amp; amp; (EndQ!=NULL) amp; amp; (n!=1))
{p=BegQ;//передача адреси (i=0; i lt; n - 2; i ++)
{p=p- gt; next;//зсув покажчика
} gt; next=p- gt; next- gt; next;//видалення елемента lt; lt; bil udalen lt; lt; n lt; lt; -ii element raquo ; lt; lt; endl;
};
//на випадок видалення першого елемента ((BegQ!=NULL) amp; amp; (EndQ!=NULL) amp; amp; (n == 1))
{BegQ=BegQ- gt; next; lt; lt; bil udalen lt; lt; n lt; lt; -ii element lt; lt; endl;
};
((BegQ == NULL) amp; amp; (EndQ == NULL))//якщо список порожній
Додаток А (продовження)
{cout lt; lt; Spisok pustoi ili ne sozdan lt; lt; endl;
}((BegQ-gt;data.kolichestvo_o==NULL)amp;amp;(EndQ-gt;data.kolichestvo_o==NULL))//проверка на порожнечу списку
{cout lt; lt; Spisok pustoi lt; lt; endl;//висновок соотв. повідомлення
};
}
sspisok :: show_sp (void)//перегляд списку
{Q=BegQ;//зсув покажчика (Q- gt; data.kolichestvo_o!=NULL)
{cout lt; lt; Nazvanie Klass Kol-vo obshee Kol-vo svobodnoe Cena lt; lt; endl lt; lt; endl; (Q!=NULL)//поки не початок списку
{.width(8);lt;lt;Q-gt;data.nazvanie;.width(10);lt;lt;Q-gt;data.class_;.width(10);lt;lt;Q-gt;data.kolichestvo_o;.width(18);lt;lt;Q-gt;data.kolichestvo_s;.width(20);lt;lt;Q-gt;data.cenalt;lt;endl;
=Q- gt; next;//перехід на наступну позицію
}
} ((BegQ == NULL) amp; amp; (EndQ == NULL))//якщо спискок порожній
{cout lt; lt; Spisok ne sozdan lt; lt; endl;//висновок соотв. повідомлення
}((BegQ-gt;data.kolichestvo_o==NULL)amp;amp;(EndQ-gt;data.kolichestvo_o==NULL))//проверка на порожнечу списку
{cout lt; lt; Spisok pustoi lt; lt; endl;//висновок соотв. повідомлення
};
}
sspisok :: sp_copy_mas ()//копіювання списку в масив
{long i, n;//n-для визначення кількості елементів у списку, i-для циклу
//якщо в списку що тобто=BegQ;//зсув покажчика=0;//обнулення кількості (Q!=NULL)//поки не початок списку
{n ++;=Q- gt; next;//перехід на наступну позицію
}=(data _ *) malloc (n * sizeof (data _));//створення динамічного масиву=n;//пер...