Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетодичкаТ Алгор2012.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
472.06 Кб
Скачать

2.4. Черги.

Черга – це лінійно зв'язана структура даних, у якій додавати елементи можна тільки в кінець черги, а видаляти дані можна тільки з початку черги. Інша назва цього способу організації даних:

FIFO- First - In- First Out (першим увійшов – першим вийшов)/

При роботі з чергами можна використовувати один покажчик на початок черги або два покажчики – один на початок, а інший на кінець черги.

Елемент черги має вигляд:

struct node

{ float num //ключове поле

//інформаційні поля

node *next; // покажчик на наступний елемент

};

Приклад

Організувати дані у вигляді черги. Вивести на екран елементи черги з одночасним видаленням із пам’яті.

Блок-схема програми

Текст програми:

#include <iostream.h>

struct node

{

int num;

node *next;

};

node* createFirst(int);

node* toQueue(node* ,int);

node* fromQueue(node* );

void print(node*);

void main()

{

int what,i,n;

node *head=0, *tail=0;

cout<<"input n=";

cin>>n;

cout<<endl;

cout<<"input first what"<<endl;

cin>>what;

cout<<endl;

head=createFirst(what);

tail=head;

cout<<"input all what"<<endl;

for (i=1;i<n;i++)

{

cin>>what;

tail= toQueue(tail ,what);

}

print(head);

if (!head)

cout<<"Queue is nil\n";

else

{

cout<<"fromQueue:"<<endl;

while(head)

{

cout<<head->num<<" ";

head=fromQueue(head);

}

cout<<endl;

}

}

node* createFirst(int num)

{

node* pv=new node;

pv->num=num;

pv->next=0;

return pv;

}

node* toQueue(node* tail ,int num)

{

node* pv=new node;

pv->num=num;

pv->next=0;

tail->next=pv;

tail=pv;

return tail;

}

node* fromQueue(node* head)

{ int num;

node* old=head;

head=head->next;

delete old;

return head;

}

void print(node* pv)

{

if (!pv)

cout<<"Queue is nil\n";

else

while(pv)

{

cout<<"="<<pv->num<<endl;

pv=pv->next;

};

}

Варіанти індивідуальних завдань

  1. Підрахувати, скільки елементів черги має значення, яке перевищує середнє арифметичне значення всіх елементів черги.

  2. Знайти максимальне значення серед елементів черги.

  3. Знайти мінімальне значення серед елементів черги.

  4. Визначити, скільки елементів черги, починаючи з вершини, знаходиться до елемента з максимальним значенням.

  5. Визначити, скільки елементів черги, починаючи від вершини, знаходиться до елемента з мінімальним значенням.

  6. Визначити, скільки елементів черги, починаючи з вершини, знаходиться після елемента з максимальним значенням.

  7. Визначити, скільки елементів черги, починаючи від вершини, знаходиться після елемента з мінімальним значенням.

  8. Визначити, скільки елементів черги знаходиться між його мінімальним і максимальним елементами.

  9. Визначити, скільки елементів черги має значення менше середнього арифметичного значення всіх елементів черги.

  10. Визначити, скільки елементів черги має значення більше середнього арифметичного значення всіх елементів черги.

  11. Створити нову чергу, що містить тільки числа, більші середнього значення всіх елементів першого черги.

  12. Перетворити чергу у дві. У першу помістити всі парні, а в другу – усі непарні числа.

  13. Створити нову чергу, порядок проходження елементів у якій зворотний щодо першої черги.

  14. Створити нову чергу, у яку помістити кожний третій елемент першої черги.

  15. Створити нову чергу, у яку помістити елементи, що лежать у другій половині першої черги.

  16. Сформувати чергу, що містить рядки й зберегти її в текстовому файлі.

  17. Вилучити із черги всі парні числа.

  18. Вилучити із черги всі негативні числа.

  19. Поміняти місцями крайні елементи черги.

  20. Поміняти місцями мінімальний і максимальний елементи черги.

  21. Вилучити із черги кожний другий елемент.

  22. Вилучити із черги всі елементи, розташовані до мінімального елемента черги.

  23. Поміняти місцями найбільший серед негативних і найменший серед позитивних елементів черги.

  24. Помістити максимальний елемент черги на першу позицію.

  25. Поміняти місцями мінімальний і перший елементи черги.

  26. Поміняти місцями перший і останній елементи черги.

  27. Вилучити перший і останній елементи черги.

  28. Вилучити із черги всі елементи, розташовані між мінімальним і максимальним елементами черги.

  29. Вилучити із черги всі елементи, що знаходяться після максимального елемента.

  30. Знайти середнє значення всіх елементів черги й вилучити всі елементи, які менше середнього значення.