Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Приклади_видалення.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
99.84 Кб
Скачать

Приклад 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";

}

--------------------------------------------------------------------------