Частина тексту файла (без зображень, графіків і формул):
Сосєдський Владислав, ТР-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() + " "); } }}