Skip to content
This repository was archived by the owner on Dec 28, 2024. It is now read-only.

Commit 3d46a57

Browse files
authored
Merge pull request #664 from Vika-Permyakova/lab22-24
Лабораторная 22-24
2 parents b0448db + 31fddf2 commit 3d46a57

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+1081
-0
lines changed

students/23K0364/23K0364-p23/pom.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
<parent>
6+
<artifactId>23K0364</artifactId>
7+
<groupId>ru.mirea.practice</groupId>
8+
<version>2024.1</version>
9+
<relativePath>../pom.xml</relativePath>
10+
</parent>
11+
<artifactId>23K0364-p23</artifactId>
12+
<description>23 задание</description>
13+
</project>
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package ru.mirea.practice.s0000001.task1;
2+
3+
public class ArrayQueue {
4+
private int capacity = 10;
5+
private Object[] queue;
6+
private int front = 0;
7+
private int rear = 0;
8+
private int size = 0;
9+
10+
public ArrayQueue() {
11+
queue = new Object[capacity];
12+
}
13+
14+
public void enqueue(Object element) {
15+
if (size == capacity) {
16+
throw new IllegalStateException("Queue is full");
17+
}
18+
queue[rear] = element;
19+
rear = (rear + 1) % capacity;
20+
size++;
21+
}
22+
23+
public Object element() {
24+
if (size == 0) {
25+
throw new IllegalStateException("Queue is empty");
26+
}
27+
return queue[front];
28+
}
29+
30+
public Object dequeue() {
31+
if (size == 0) {
32+
throw new IllegalStateException("Queue is empty");
33+
}
34+
Object result = queue[front];
35+
front = (front + 1) % capacity;
36+
size--;
37+
return result;
38+
}
39+
40+
public boolean isEmpty() {
41+
return size == 0;
42+
}
43+
44+
public int size() {
45+
return size;
46+
}
47+
48+
public void clear() {
49+
front = 0;
50+
rear = 0;
51+
size = 0;
52+
}
53+
54+
public static void main(String[] args) {
55+
ArrayQueue queue = new ArrayQueue();
56+
queue.enqueue(1);
57+
queue.enqueue(2);
58+
System.out.println(queue.element());
59+
System.out.println(queue.dequeue());
60+
System.out.println(queue.size());
61+
queue.clear();
62+
System.out.println(queue.isEmpty());
63+
}
64+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package ru.mirea.practice.s0000001.task1;
2+
3+
public class ArrayQueueAdt {
4+
private int capacity = 10;
5+
private Object[] queue;
6+
private int front = 0;
7+
private int rear = 0;
8+
private int size = 0;
9+
10+
public ArrayQueueAdt() {
11+
queue = new Object[capacity];
12+
}
13+
14+
public void enqueue(Object element) {
15+
if (size == capacity) {
16+
throw new IllegalStateException("Queue is full");
17+
}
18+
queue[rear] = element;
19+
rear = (rear + 1) % capacity;
20+
size++;
21+
}
22+
23+
public Object element() {
24+
if (size == 0) {
25+
throw new IllegalStateException("Queue is empty");
26+
}
27+
return queue[front];
28+
}
29+
30+
public Object dequeue() {
31+
if (size == 0) {
32+
throw new IllegalStateException("Queue is empty");
33+
}
34+
Object result = queue[front];
35+
front = (front + 1) % capacity;
36+
size--;
37+
return result;
38+
}
39+
40+
public boolean isEmpty() {
41+
return size == 0;
42+
}
43+
44+
public int size() {
45+
return size;
46+
}
47+
48+
public void clear() {
49+
front = 0;
50+
rear = 0;
51+
size = 0;
52+
}
53+
54+
public static void main(String[] args) {
55+
ArrayQueueAdt queue = new ArrayQueueAdt();
56+
queue.enqueue(1);
57+
queue.enqueue(2);
58+
System.out.println(queue.element());
59+
System.out.println(queue.dequeue());
60+
System.out.println(queue.size());
61+
queue.clear();
62+
System.out.println(queue.isEmpty());
63+
}
64+
}
65+
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package ru.mirea.practice.s0000001.task1;
2+
3+
public abstract class ArrayQueueModule {
4+
private static final int CAPACITY = 10;
5+
private static Object[] queue = new Object[CAPACITY];
6+
private static int front = 0;
7+
private static int rear = 0;
8+
private static int size = 0;
9+
10+
public static void enqueue(Object element) {
11+
if (size == CAPACITY) {
12+
throw new IllegalStateException("Queue is full");
13+
}
14+
queue[rear] = element;
15+
rear = (rear + 1) % CAPACITY;
16+
size++;
17+
}
18+
19+
public static Object element() {
20+
if (size == 0) {
21+
throw new IllegalStateException("Queue is empty");
22+
}
23+
return queue[front];
24+
}
25+
26+
public static Object dequeue() {
27+
if (size == 0) {
28+
throw new IllegalStateException("Queue is empty");
29+
}
30+
Object result = queue[front];
31+
front = (front + 1) % CAPACITY;
32+
size--;
33+
return result;
34+
}
35+
36+
public static boolean isEmpty() {
37+
return size == 0;
38+
}
39+
40+
public static int size() {
41+
return size;
42+
}
43+
44+
public static void clear() {
45+
front = 0;
46+
rear = 0;
47+
size = 0;
48+
}
49+
50+
public static void main(String[] args) {
51+
enqueue(1);
52+
enqueue(2);
53+
System.out.println(element());
54+
System.out.println(dequeue());
55+
System.out.println(size());
56+
clear();
57+
System.out.println(isEmpty());
58+
}
59+
}
60+
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package ru.mirea.practice.s0000001.task2;
2+
3+
public abstract class AbstractQueue implements Queue {
4+
protected int size = 0;
5+
6+
@Override
7+
public boolean isEmpty() {
8+
return size == 0;
9+
}
10+
11+
@Override
12+
public int size() {
13+
return size;
14+
}
15+
16+
@Override
17+
public void clear() {
18+
size = 0;
19+
}
20+
}
21+
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package ru.mirea.practice.s0000001.task2;
2+
3+
public class ArrayQueue extends AbstractQueue {
4+
private static final int CAPACITY = 10;
5+
private Object[] queue = new Object[CAPACITY];
6+
private int front = 0;
7+
private int rear = 0;
8+
9+
@Override
10+
public void enqueue(Object element) {
11+
if (size == CAPACITY) {
12+
throw new IllegalStateException("Queue is full");
13+
}
14+
queue[rear] = element;
15+
rear = (rear + 1) % CAPACITY;
16+
size++;
17+
}
18+
19+
@Override
20+
public Object dequeue() {
21+
if (isEmpty()) {
22+
throw new IllegalStateException("Queue is empty");
23+
}
24+
final Object result = queue[front];
25+
front = (front + 1) % CAPACITY;
26+
size--;
27+
return result;
28+
}
29+
30+
31+
@Override
32+
public Object element() {
33+
if (isEmpty()) {
34+
throw new IllegalStateException("Queue is empty");
35+
}
36+
return queue[front];
37+
}
38+
}
39+
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package ru.mirea.practice.s0000001.task2;
2+
3+
public class LinkedQueue implements Queue {
4+
private Node head;
5+
private Node tail;
6+
private int size;
7+
8+
private static class Node {
9+
Object data;
10+
Node next;
11+
12+
Node(Object data) {
13+
this.data = data;
14+
this.next = null;
15+
}
16+
}
17+
18+
public LinkedQueue() {
19+
this.head = this.tail = null;
20+
this.size = 0;
21+
}
22+
23+
@Override
24+
public void enqueue(Object element) {
25+
Node newNode = new Node(element);
26+
if (tail == null) {
27+
head = tail = newNode;
28+
} else {
29+
tail.next = newNode;
30+
tail = newNode;
31+
}
32+
size++;
33+
}
34+
35+
@Override
36+
public Object dequeue() {
37+
if (isEmpty()) {
38+
throw new IllegalStateException("Queue is empty");
39+
}
40+
final Object result = head.data;
41+
head = head.next;
42+
if (head == null) {
43+
tail = null;
44+
}
45+
size--;
46+
return result;
47+
}
48+
49+
50+
@Override
51+
public Object element() {
52+
if (isEmpty()) {
53+
throw new IllegalStateException("Queue is empty");
54+
}
55+
return head.data;
56+
}
57+
58+
@Override
59+
public boolean isEmpty() {
60+
return size == 0;
61+
}
62+
63+
@Override
64+
public int size() {
65+
return size;
66+
}
67+
68+
@Override
69+
public void clear() {
70+
head = tail = null;
71+
size = 0;
72+
}
73+
}
74+
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package ru.mirea.practice.s0000001.task2;
2+
3+
public abstract class Main {
4+
public static void main(String[] args) {
5+
Queue arrayQueue = new ArrayQueue();
6+
arrayQueue.enqueue(1);
7+
arrayQueue.enqueue(2);
8+
System.out.println("ArrayQueue first element: " + arrayQueue.element()); // 1
9+
System.out.println("ArrayQueue dequeued element: " + arrayQueue.dequeue()); // 1
10+
System.out.println("ArrayQueue size after dequeue: " + arrayQueue.size()); // 1
11+
arrayQueue.clear();
12+
System.out.println("ArrayQueue is empty after clear? " + arrayQueue.isEmpty()); // true
13+
14+
Queue linkedQueue = new LinkedQueue();
15+
linkedQueue.enqueue(10);
16+
linkedQueue.enqueue(20);
17+
System.out.println("LinkedQueue first element: " + linkedQueue.element()); // 10
18+
System.out.println("LinkedQueue dequeued element: " + linkedQueue.dequeue()); // 10
19+
System.out.println("LinkedQueue size after dequeue: " + linkedQueue.size()); // 1
20+
linkedQueue.clear();
21+
System.out.println("LinkedQueue is empty after clear? " + linkedQueue.isEmpty()); // true
22+
}
23+
}
24+
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package ru.mirea.practice.s0000001.task2;
2+
3+
public interface Queue {
4+
void enqueue(Object element);
5+
6+
Object dequeue();
7+
8+
Object element();
9+
10+
boolean isEmpty();
11+
12+
int size();
13+
14+
void clear();
15+
}
16+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package ru.mirea.practice.s0000001.task3;
2+
3+
public class Add extends BinaryOperation {
4+
5+
public Add(Expression left, Expression right) {
6+
super(left, right);
7+
}
8+
9+
@Override
10+
public double evaluate(double x) {
11+
return left.evaluate(x) + right.evaluate(x);
12+
}
13+
}

0 commit comments

Comments
 (0)