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

Void main ()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

Spisok A;

int el;

A.POSTROENIE ();

A.VYVOD ();

cout<<"Введіть елемент, що додається: ";

cin>>el;

A.DOBAVLENIE (el);

A.VYVOD ();

cout<<"Видалимо елемент з черги:\n";

A.UDALENIE ();

A.VYVOD ();

el = A.Set_Udal();

cout<<"Інформаційне поле видаленої ланки: "<<el<<endl;

A.OCHISTKA();

}

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

Void Spisok::postroenie ()

{

node *r;

int el;

cout<<"Введіть елементи черги:\n";

cin>>el;

if (el!=0)

{

r = new (node);

r->value = el;

r->next = NULL;

no = r;

ko = r;

cin >> el;

while (el != 0)

{

r = new (node);

r->value = el;

r->next = NULL;

ko->next = r;

ko = r;

cin >> el;

}

}

else

{

r = NULL;

no = r;

ko = r;

}

}

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

void Spisok::VYVOD ()

{

node *r;

cout<<"Черга: ";

r = no;

while (r!=NULL)

{

cout << r->value << " ";

r = r->next;

}

cout << endl;

}

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

void Spisok::DOBAVLENIE (int el)

{

node *r;

r = new (node);

r->value = el;

r->next = NULL;

if (no!=NULL)

{

ko->next = r;

ko = r;

}

else

{

no = r;

ko = r;

}

}

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

void Spisok::UDALENIE ()

{

node *q;

if (no==NULL)

cout<<"Удалить нельзя, так как очередь пуста!\n";

else

{

klad = no->value;

q = no;

no = no->next;

delete q;

}

}

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

void Spisok::OCHISTKA()

{

node *q;

q = no;

if (no!=NULL)

{

while (no!=ko)

{

no=q->next;

delete q;

q=no;

}

delete no;

no=ko=NULL;

}

}

Формування стеку.

Стек на базі лінійного однонаправленого списку - лінійний однонаправлений список, в якому всі включення і виключення ланок робляться в одному (вибраному нами) кінці списку.

Опишем алгоритм помещения в стек информации.

  1. Спочатку стек порожній:

stk = NULL;

Рис.1. Стек порожній

  1. Вміст стека вводитимемо з клавіатури, введення закінчується нулем:

cin >> el;

t = new (node);

t->value = el;

t->next = stk;

Рис.2. Новий елемент

  1. "Налаштовуємо" вказівник стеку на створений елемент:

stk = t;

Рис.3. "Налаштування" вказівника стеку

  1. В результаті в стек буде поміщено першу ланку:

Рис.4. Перший елемент в стеку

  1. Продовжимо заповнення стека:

cin >> el1;

t = new (node);

t->value = el1;

t->next = stk;

Рис.5. Розміщення в стеку другого елементу

  1. "Налаштовуємо" вказівник стеку на створений елемент:

stk = t;

Рис.6. "Налаштування" вказівника стека

  1. Тепер стек містить вже дві ланки:

Рис.7. У стеку два елементи

Приклад 16. Структурна программа. Формування стеку.

struct node

{

int value;

node *next;

};

void POSTROENIE (node** stk);

void VYVOD (node** stk);

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