Частина тексту файла (без зображень, графіків і формул):
Сосєдський Владислав, ТР-15
ПР-5_(25_05)
ДИНАМІЧНІ СТРУКТУРИ ДАНИХ. АЛГОРИТМИ ОБРОБЛЕННЯ СТЕКУ.
Завдання для виконання.
1. Розробити програму для опису “стеку” та обрати самостійно із списку два завдання.
2. Складіть текст програми (зазначені у завданні дії і вивести результати).
3. Створіть проект в інтегрованому середовищі розробки......(pract_№_призвище.cpp або pract_№_призвище.java).
4. Запустіть програму на виконання, проаналізуйте результати і переконайтеся в правильності рішення задачі.
Завдання варіанту:
/
/
/
public class PR5 { public static class ArrayStack{ private Object[] S; private int t; public ArrayStack(int capacity){ S = new Object[capacity]; t = -1; } public int size(){ return t + 1; } public boolean isEmpty(){ return (t == -1); } public void push(Object obj){ if(t+1 < S.length) S[++t] = obj; } public Object pop(){ if(isEmpty()) return null; return S[t--]; } public Object peek(){ if(isEmpty()) return null; return S[t]; } public int search(Object obj){ int n = -1; if(isEmpty()) return -1; for(int i = 0;i < S.length;i++){ if(S[i].equals(obj)){ n = i; break; } } if(n == -1){ return -1; } return (S.length - n - 1); //return n; } } public static void main(String[] args) { System.out.println("Завдання 7. Видалити максимальний елемент"); int size = 20; ArrayStack s1 = new ArrayStack(size); int maxValue = 50; System.out.println("Стек:"); for(int i = 0;i < size;i++){ s1.push((int)(Math.random()*maxValue)); System.out.print(s1.peek() + " "); } int t = -1; while(t == -1){ maxValue--; t = s1.search(maxValue); } ArrayStack s1mem = new ArrayStack(t); for(int i = 0;i < t;i++){ s1mem.push(s1.pop()); } System.out.println("\nМаксимальне значення = " + s1.pop()); for(int i = 0;i < t;i++){ s1.push(s1mem.pop()); } ArrayStack s1out = new ArrayStack(size - 1); for(int i = 0;i < size - 1;i++){ s1out.push(s1.pop()); } System.out.println("Стек після видалення масимального елемента:"); for(int i = 0;i < size - 1;i++){ s1.push(s1out.pop()); System.out.print(s1.peek() + " "); } System.out.println("\nЗавдання 10. Знайти максимальний елемент “стека” і вставити після нього 0"); ArrayStack s2 = new ArrayStack(size); maxValue = 50; System.out.println("Стек:"); for(int i = 0;i < size;i++){ s2.push((int)(Math.random()*maxValue)); System.out.print(s2.peek() + " "); } t = -1; while(t == -1){ maxValue--; t = s2.search(maxValue); } ArrayStack s2mem = new ArrayStack(t); for(int i = 0;i < t;i++){ s2mem.push(s2.pop()); } System.out.println("\nМаксимальне значення = " + s2.peek()); s2.push(0); for(int i = 0;i < t;i++){ s2.push(s2mem.pop()); } ArrayStack s2out = new ArrayStack(size + 1); for(int i = 0;i < size;i++){ s2out.push(s2.pop()); } System.out.println("Стек після додавання 0:"); for(int i = 0;i < size + 1;i++){ s2.push(s2out.pop()); System.out.print(s2.peek() + " "); } }}
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!