Skip to content

Commit 0f2ad4f

Browse files
authored
Merge branch 'master' into rotate_sll_improve
2 parents ac77b7b + e1a0155 commit 0f2ad4f

23 files changed

+1287
-207
lines changed

DIRECTORY.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -523,22 +523,29 @@
523523
* Recursion
524524
* [GenerateSubsets](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java)
525525
* scheduling
526+
* [AgingScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/AgingScheduling.java)
526527
* diskscheduling
527528
* [CircularLookScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/diskscheduling/CircularLookScheduling.java)
528529
* [CircularScanScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/diskscheduling/CircularScanScheduling.java)
529530
* [LookScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/diskscheduling/LookScheduling.java)
530531
* [ScanScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/diskscheduling/ScanScheduling.java)
531532
* [SSFScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/diskscheduling/SSFScheduling.java)
532533
* [EDFScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/EDFScheduling.java)
534+
* [FairShareScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/FairShareScheduling.java)
533535
* [FCFSScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/FCFSScheduling.java)
536+
* [GangScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/GangScheduling.java)
534537
* [HighestResponseRatioNextScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/HighestResponseRatioNextScheduling.java)
535538
* [JobSchedulingWithDeadline](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/JobSchedulingWithDeadline.java)
536539
* [LotteryScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/LotteryScheduling.java)
537540
* [MLFQScheduler](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/MLFQScheduler.java)
541+
* [MultiAgentScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/MultiAgentScheduling.java)
538542
* [NonPreemptivePriorityScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/NonPreemptivePriorityScheduling.java)
539543
* [PreemptivePriorityScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/PreemptivePriorityScheduling.java)
544+
* [ProportionalFairScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/ProportionalFairScheduling.java)
540545
* [RRScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/RRScheduling.java)
546+
* [SelfAdjustingScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/SelfAdjustingScheduling.java)
541547
* [SJFScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/SJFScheduling.java)
548+
* [SlackTimeScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/SlackTimeScheduling.java)
542549
* [SRTFScheduling](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/scheduling/SRTFScheduling.java)
543550
* searches
544551
* [BinarySearch](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/searches/BinarySearch.java)
@@ -859,6 +866,7 @@
859866
* [QueueByTwoStacksTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/queues/QueueByTwoStacksTest.java)
860867
* [QueueTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/queues/QueueTest.java)
861868
* stacks
869+
* [NodeStackTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/stacks/NodeStackTest.java)
862870
* [StackArrayListTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/stacks/StackArrayListTest.java)
863871
* [StackArrayTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/stacks/StackArrayTest.java)
864872
* [StackOfLinkedListTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/stacks/StackOfLinkedListTest.java)
@@ -1118,22 +1126,29 @@
11181126
* Recursion
11191127
* [GenerateSubsetsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/Recursion/GenerateSubsetsTest.java)
11201128
* scheduling
1129+
* [AgingSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/AgingSchedulingTest.java)
11211130
* diskscheduling
11221131
* [CircularLookSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/diskscheduling/CircularLookSchedulingTest.java)
11231132
* [CircularScanSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/diskscheduling/CircularScanSchedulingTest.java)
11241133
* [LookSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/diskscheduling/LookSchedulingTest.java)
11251134
* [ScanSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/diskscheduling/ScanSchedulingTest.java)
11261135
* [SSFSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/diskscheduling/SSFSchedulingTest.java)
11271136
* [EDFSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/EDFSchedulingTest.java)
1137+
* [FairShareSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/FairShareSchedulingTest.java)
11281138
* [FCFSSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/FCFSSchedulingTest.java)
1139+
* [GangSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/GangSchedulingTest.java)
11291140
* [HighestResponseRatioNextSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/HighestResponseRatioNextSchedulingTest.java)
11301141
* [JobSchedulingWithDeadlineTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/JobSchedulingWithDeadlineTest.java)
11311142
* [LotterySchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/LotterySchedulingTest.java)
11321143
* [MLFQSchedulerTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/MLFQSchedulerTest.java)
1144+
* [MultiAgentSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/MultiAgentSchedulingTest.java)
11331145
* [NonPreemptivePrioritySchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/NonPreemptivePrioritySchedulingTest.java)
11341146
* [PreemptivePrioritySchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/PreemptivePrioritySchedulingTest.java)
1147+
* [ProportionalFairSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/ProportionalFairSchedulingTest.java)
11351148
* [RRSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/RRSchedulingTest.java)
1149+
* [SelfAdjustingSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/SelfAdjustingSchedulingTest.java)
11361150
* [SJFSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/SJFSchedulingTest.java)
1151+
* [SlackTimeSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/SlackTimeSchedulingTest.java)
11371152
* [SRTFSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/scheduling/SRTFSchedulingTest.java)
11381153
* searches
11391154
* [BinarySearch2dArrayTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/searches/BinarySearch2dArrayTest.java)

src/main/java/com/thealgorithms/datastructures/lists/SortedLinkedList.java

Lines changed: 41 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,42 @@
44
import java.util.List;
55

66
/**
7-
* A SortedLinkedList is a data structure that maintains a sorted list of elements.
8-
* Elements are ordered based on their natural ordering or by a Comparator provided at the time of creation.
9-
* This implementation uses a singly linked list to store the elements.
10-
* Further details can be found on this link
7+
* The SortedLinkedList class represents a singly linked list that maintains its elements in sorted order.
8+
* Elements are ordered based on their natural ordering, with smaller elements at the head and larger elements toward the tail.
9+
* The class provides methods for inserting, deleting, and searching elements, as well as checking if the list is empty.
10+
* <p>
11+
* This implementation utilizes a singly linked list to maintain a dynamically sorted list.
12+
* </p>
13+
* <p>
14+
* Further information can be found here:
1115
* https://runestone.academy/ns/books/published/cppds/LinearLinked/ImplementinganOrderedList.html
16+
* </p>
17+
*
18+
* <b>Usage Example:</b>
19+
* <pre>
20+
* SortedLinkedList list = new SortedLinkedList();
21+
* list.insert(10);
22+
* list.insert(5);
23+
* list.insert(20);
24+
* System.out.println(list); // Outputs: [5, 10, 20]
25+
* </pre>
1226
*/
1327
public class SortedLinkedList {
1428
private Node head;
1529
private Node tail;
1630

31+
/**
32+
* Initializes an empty sorted linked list.
33+
*/
1734
public SortedLinkedList() {
1835
this.head = null;
1936
this.tail = null;
2037
}
2138

2239
/**
23-
* Inserts a new element into the sorted linked list.
24-
* @param value the value to be inserted
40+
* Inserts a new integer into the list, maintaining sorted order.
41+
*
42+
* @param value the integer to insert
2543
*/
2644
public void insert(int value) {
2745
Node newNode = new Node(value);
@@ -48,16 +66,10 @@ public void insert(int value) {
4866
}
4967

5068
/**
51-
* Displays the elements of the sorted linked list.
52-
*/
53-
public void display() {
54-
System.out.println(this.toString());
55-
}
56-
57-
/**
58-
* Deletes the first occurrence of the specified element in the sorted linked list.
59-
* @param value the value to be deleted
60-
* @return true if the element is found and deleted, false otherwise
69+
* Deletes the first occurrence of a specified integer in the list.
70+
*
71+
* @param value the integer to delete
72+
* @return {@code true} if the element was found and deleted; {@code false} otherwise
6173
*/
6274
public boolean delete(int value) {
6375
if (this.head == null) {
@@ -87,9 +99,10 @@ public boolean delete(int value) {
8799
}
88100

89101
/**
90-
* Searches for the specified element in the sorted linked list.
91-
* @param value the value to be searched
92-
* @return true if the element is found, false otherwise
102+
* Searches for a specified integer in the list.
103+
*
104+
* @param value the integer to search for
105+
* @return {@code true} if the value is present in the list; {@code false} otherwise
93106
*/
94107
public boolean search(int value) {
95108
Node temp = this.head;
@@ -103,14 +116,17 @@ public boolean search(int value) {
103116
}
104117

105118
/**
106-
* Checks if the sorted linked list is empty.
107-
* @return true if the list is empty, false otherwise
119+
* Checks if the list is empty.
120+
*
121+
* @return {@code true} if the list is empty; {@code false} otherwise
108122
*/
109123
public boolean isEmpty() {
110124
return head == null;
111125
}
126+
112127
/**
113-
* Returns a string representation of the sorted linked list.
128+
* Returns a string representation of the sorted linked list in the format [element1, element2, ...].
129+
*
114130
* @return a string representation of the sorted linked list
115131
*/
116132
@Override
@@ -123,12 +139,14 @@ public String toString() {
123139
temp = temp.next;
124140
}
125141
return "[" + String.join(", ", elements) + "]";
126-
127142
} else {
128143
return "[]";
129144
}
130145
}
131146

147+
/**
148+
* Node represents an element in the sorted linked list.
149+
*/
132150
public final class Node {
133151
public final int value;
134152
public Node next;

src/main/java/com/thealgorithms/datastructures/queues/GenericArrayListQueue.java

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,43 +4,46 @@
44
import java.util.List;
55

66
/**
7-
* This class implements a GenericArrayListQueue.
7+
* This class implements a GenericArrayListQueue, a queue data structure that
8+
* holds elements of any type specified at runtime, allowing flexibility in the type
9+
* of elements it stores.
810
*
9-
* A GenericArrayListQueue data structure functions the same as any
10-
* specific-typed queue. The GenericArrayListQueue holds elements of types
11-
* to-be-specified at runtime. The elements that are added first are the first
12-
* to be removed (FIFO). New elements are added to the back/rear of the queue.
11+
* <p>The GenericArrayListQueue operates on a First-In-First-Out (FIFO) basis, where
12+
* elements added first are the first to be removed. New elements are added to the back
13+
* (or rear) of the queue, while removal of elements occurs from the front.
14+
*
15+
* @param <T> The type of elements held in this queue.
1316
*/
1417
public class GenericArrayListQueue<T> {
1518

1619
/**
17-
* The generic List for the queue. T is the generic element type.
20+
* A list that stores the queue's elements in insertion order.
1821
*/
1922
private final List<T> elementList = new ArrayList<>();
2023

2124
/**
2225
* Checks if the queue is empty.
2326
*
24-
* @return True if the queue is empty, false otherwise.
27+
* @return {@code true} if the queue has no elements; {@code false} otherwise.
2528
*/
26-
private boolean isEmpty() {
29+
public boolean isEmpty() {
2730
return elementList.isEmpty();
2831
}
2932

3033
/**
31-
* Returns the element at the front of the queue without removing it.
34+
* Retrieves, but does not remove, the element at the front of the queue.
3235
*
33-
* @return The element at the front of the queue, or null if the queue is empty.
36+
* @return The element at the front of the queue, or {@code null} if the queue is empty.
3437
*/
3538
public T peek() {
3639
return isEmpty() ? null : elementList.getFirst();
3740
}
3841

3942
/**
40-
* Inserts an element of type T to the back of the queue.
43+
* Inserts an element at the back of the queue.
4144
*
42-
* @param element the element to be added to the queue.
43-
* @return True if the element was added successfully.
45+
* @param element The element to be added to the queue.
46+
* @return {@code true} if the element was successfully added.
4447
*/
4548
public boolean add(T element) {
4649
return elementList.add(element);
@@ -49,7 +52,7 @@ public boolean add(T element) {
4952
/**
5053
* Retrieves and removes the element at the front of the queue.
5154
*
52-
* @return The element removed from the front of the queue, or null if the queue is empty.
55+
* @return The element removed from the front of the queue, or {@code null} if the queue is empty.
5356
*/
5457
public T poll() {
5558
return isEmpty() ? null : elementList.removeFirst();

0 commit comments

Comments
 (0)