
Приклад 7. Структурна програма. Виключення ланки (1-й випадок, після).
struct node
{
int value;
node *next;
};
void POSTROENIE (node** phead);
void VYVOD (node* phead);
void OCHISTKA (node **phead);
void POISK (node** phead, int el, node** Res);
void UDALENIE (node **Res);
--------------------------------------------------------------------------
Int main ()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
node *phead, * Res;
POSTROENIE (&phead);
cout<< "\nSPISOK:" << endl;
VYVOD (phead);
int el;
cout << "\nВведіть елемент ланки, після якої видаляється: \n";
cin >> el;
POISK (&phead, el, &Res);
UDALENIE (&Res);
VYVOD (phead);
OCHISTKA (&phead);
return 0;
}
--------------------------------------------------------------------------
…
void UDALENIE (node **Res)
{
node *q;
q = (*Res)->next;
if (q!=NULL)
{
(*Res)->next = (*(*Res)->next).next;
delete q;
}
else
cout<<"\nЛанка із заданим елементом - остання!\n";
}
Приклад 8. Структурна програма. Виключення ланки (2-й випадок, замість).
struct node
{
int value;
node *next;
};
void POSTROENIE (node** phead);
void VYVOD (node* phead);
void OCHISTKA (node **phead);
void POISK (node** phead, int el, node** Res);
void UDALENIE1 (node** phead, node **Res);
--------------------------------------------------------------------------
int main ()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
node *phead, * Res;
POSTROENIE (&phead);
cout<< "\nSPISOK:" << endl;
VYVOD (phead);
int el;
cout << "\nВведіть ланку, яка видаляється: \n";
cin >> el;
POISK (&phead, el, &Res);
UDALENIE1 (&phead, &Res);
VYVOD (phead);
OCHISTKA (&phead);
return 0;
}… … …
--------------------------------------------------------------------------
Void udalenie1 (node **phead, node **Res)
{
node *q,*q1,*q2;
q = (*Res)->next;
if (q!=NULL)
{
(*Res)->value = q->value;
(*Res)->next = q->next;
delete q;
}
else
{
q1 = *phead;
q2 = q1->next;
while (q2!=*Res)
{
q1 = q2;
q2 = q2->next;
}
q1->next = NULL;
q2 = NULL;
delete *Res;
}
}
Приклад 9. Об'єктно-орієнтована програма. Виключення ланки (два випадка)
struct node
{
Int value;
node *next;
};
class Spisok
{
private:
node* phead;
node* Res;
public:
Spisok()
{
phead = new (node);
phead->next=NULL;
Res=NULL;
}
~Spisok()
{
delete phead;
}
void POSTROENIE();
void VYVOD();
void OCHISTKA();
node* POISK(int);
void UDALENIE();
void UDALENIE1();
};
--------------------------------------------------------------------------
Int main ()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Spisok A;
int el;
A.POSTROENIE ();
A.VYVOD ();
cout<<"\nВведите элемент звена, после которого ";
cout<<"осуществляется удаление:\n";
cin>>el;
if (A.POISK(el)!=NULL)
{
A.UDALENIE();
A.VYVOD();
}
else
cout<<"Звена с заданным элементом в списке нет!";
cout<<"\nВведите элемент звена, который удаляется:\n";
cin>>el;
if (A.POISK(el)!=NULL)
{
A.UDALENIE1(); A.VYVOD();
}
else
cout<<"\nЗвена с заданным элементом в списке нет!\n";
A.OCHISTKA();
return 0;
}
--------------------------------------------------------------------------
… … …
--------------------------------------------------------------------------
Void Spisok::udalenie()
{
node *q;
q = Res->next;
if (q!=NULL)
{
Res->next = Res->next->next; //(*(*Res).next).next
delete q;
}
else
cout<<"\nЗвено с заданным элементом - последнее!\n";
}
--------------------------------------------------------------------------