Skip to content

Commit daebb0b

Browse files
committed
[Manan] ADD:Task Scheduler using a Circular Linked List
1 parent 52493d1 commit daebb0b

File tree

1 file changed

+153
-0
lines changed

1 file changed

+153
-0
lines changed

TaskScheduler.java

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
import java.util.Date;
2+
3+
class TaskScheduler {
4+
private class Node {
5+
int taskId;
6+
String taskName;
7+
int priority;
8+
Date dueDate;
9+
Node next;
10+
11+
Node(int taskId, String taskName, int priority, Date dueDate) {
12+
this.taskId = taskId;
13+
this.taskName = taskName;
14+
this.priority = priority;
15+
this.dueDate = dueDate;
16+
this.next = null;
17+
}
18+
}
19+
20+
private Node head = null;
21+
private Node tail = null;
22+
private Node currentTask = null;
23+
24+
public void addTaskAtEnd(int taskId, String taskName, int priority, Date dueDate) {
25+
Node newNode = new Node(taskId, taskName, priority, dueDate);
26+
if (head == null) {
27+
head = newNode;
28+
tail = newNode;
29+
newNode.next = head;
30+
} else {
31+
tail.next = newNode;
32+
tail = newNode;
33+
tail.next = head;
34+
}
35+
}
36+
37+
public void addTaskAtBeginning(int taskId, String taskName, int priority, Date dueDate) {
38+
Node newNode = new Node(taskId, taskName, priority, dueDate);
39+
if (head == null) {
40+
head = newNode;
41+
tail = newNode;
42+
newNode.next = head;
43+
} else {
44+
newNode.next = head;
45+
head = newNode;
46+
tail.next = head;
47+
}
48+
}
49+
50+
public void addTaskAtPosition(int taskId, String taskName, int priority, Date dueDate, int position) {
51+
if (position <= 1) {
52+
addTaskAtBeginning(taskId, taskName, priority, dueDate);
53+
return;
54+
}
55+
Node newNode = new Node(taskId, taskName, priority, dueDate);
56+
Node temp = head;
57+
for (int i = 1; i < position - 1 && temp.next != head; i++) {
58+
temp = temp.next;
59+
}
60+
newNode.next = temp.next;
61+
temp.next = newNode;
62+
if (temp == tail) {
63+
tail = newNode;
64+
}
65+
}
66+
67+
public void removeTaskById(int taskId) {
68+
if (head == null) return;
69+
if (head.taskId == taskId) {
70+
if (head == tail) {
71+
head = null;
72+
tail = null;
73+
} else {
74+
head = head.next;
75+
tail.next = head;
76+
}
77+
return;
78+
}
79+
Node temp = head;
80+
do {
81+
if (temp.next.taskId == taskId) {
82+
temp.next = temp.next.next;
83+
if (temp.next == head) {
84+
tail = temp;
85+
}
86+
return;
87+
}
88+
temp = temp.next;
89+
} while (temp != head);
90+
}
91+
92+
public void viewCurrentTask() {
93+
if (currentTask == null) {
94+
currentTask = head;
95+
}
96+
if (currentTask != null) {
97+
System.out.println("Current Task: " + currentTask.taskName + ", Priority: " + currentTask.priority);
98+
currentTask = currentTask.next;
99+
}
100+
}
101+
102+
public void displayAllTasks() {
103+
if (head == null) {
104+
System.out.println("No tasks available.");
105+
return;
106+
}
107+
Node temp = head;
108+
do {
109+
System.out.println("Task ID: " + temp.taskId + ", Name: " + temp.taskName + ", Priority: " + temp.priority);
110+
temp = temp.next;
111+
} while (temp != head);
112+
}
113+
114+
public void searchByPriority(int priority) {
115+
if (head == null) {
116+
System.out.println("No tasks available.");
117+
return;
118+
}
119+
Node temp = head;
120+
boolean found = false;
121+
do {
122+
if (temp.priority == priority) {
123+
System.out.println("Task Found - ID: " + temp.taskId + ", Name: " + temp.taskName);
124+
found = true;
125+
}
126+
temp = temp.next;
127+
} while (temp != head);
128+
if (!found) {
129+
System.out.println("No task with priority " + priority + " found.");
130+
}
131+
}
132+
133+
public static void main(String[] args) {
134+
TaskScheduler scheduler = new TaskScheduler();
135+
scheduler.addTaskAtEnd(1, "Task A", 3, new Date());
136+
scheduler.addTaskAtEnd(2, "Task B", 2, new Date());
137+
scheduler.addTaskAtBeginning(3, "Task C", 1, new Date());
138+
scheduler.displayAllTasks();
139+
scheduler.viewCurrentTask();
140+
scheduler.searchByPriority(2);
141+
scheduler.removeTaskById(2);
142+
scheduler.displayAllTasks();
143+
}
144+
}
145+
146+
//SampleOutput
147+
//Task ID: 3, Name: Task C, Priority: 1
148+
//Task ID: 1, Name: Task A, Priority: 3
149+
//Task ID: 2, Name: Task B, Priority: 2
150+
//Current Task: Task C, Priority: 1
151+
//Task Found - ID: 2, Name: Task B
152+
//Task ID: 3, Name: Task C, Priority: 1
153+
//Task ID: 1, Name: Task A, Priority: 3

0 commit comments

Comments
 (0)