DSA Java Project – Traffic Light Simulation
by DataFlair Team
Program 1
// Project: Traffic Light Simulation Using Queue Linked List
//----------------------------------------------------------
// Features:
// Add vehicles to queue (simulating arrival)
// Process vehicles when the signal turns green
// Show vehicles in the queue
// Count waiting vehicles
// Clear All Vehicles (Emergency Clear Signal)
//Search for a Vehicle by Number
//Display First and Last Vehicle in Queue
//Log of Passed Vehicles
import java.util.Scanner;
class Vehicle // Node
{
String number;
Vehicle next;
Vehicle(String number)
{
this.number = number;
this.next = null;
}
}
class TrafficQueue
{
private Vehicle front;
private Vehicle rear;
private Vehicle passedLog;
public TrafficQueue()
{
this.front = null;
this.rear = null;
this.passedLog = null;
}
public void arriveVehicle(String number)
{
Vehicle temp = new Vehicle(number);
if (rear == null)
{
front = rear = temp;
} else
{
rear.next = temp;
rear = temp;
}
System.out.println("\n Vehicle " + number + " arrived at the signal.");
}
private void logPassedVehicle(String number)
{
Vehicle temp = new Vehicle(number);
if (passedLog == null) {
passedLog = temp;
} else
{
Vehicle ptr = passedLog;
while (ptr.next != null)
{
ptr = ptr.next;
}
ptr.next = temp;
}
}
public void passVehicle()
{
if (front == null)
{
System.out.println("\n No vehicles waiting at the signal.");
return;
}
Vehicle temp = front;
System.out.println("\n--> Vehicle " + temp.number + " passed the signal.");
logPassedVehicle(temp.number);
front = front.next;
temp.next=null;
temp=null;
if (front == null)
rear = null;
}
public void displayQueue()
{
if (front == null)
{
System.out.println("\n No vehicles in the queue.");
return;
}
System.out.println("\n Vehicles at signal:");
Vehicle temp = front;
while (temp != null)
{
System.out.println(" --> " + temp.number);
temp = temp.next;
}
}
public void countQueue()
{
int count = 0;
Vehicle temp = front;
while (temp != null) {
count++;
temp = temp.next;
}
System.out.println("\n Total vehicles waiting: " + count);
}
public void clearQueue()
{
while (front != null)
{
front = front.next;
}
rear = null;
System.out.println("\n All vehicles cleared from the signal!");
}
public void searchVehicle(String number)
{
Vehicle temp = front;
while (temp != null)
{
if (temp.number.equals(number))
{
System.out.println("\n --> Vehicle " + number + " is currently in the queue.");
return;
}
temp = temp.next;
}
System.out.println("\n Vehicle " + number + " not found in queue.");
}
public void showFirstAndLast()
{
if (front == null) {
System.out.println("\n No vehicles in the queue.");
return;
}
System.out.println("\n--> First Vehicle: " + front.number);
System.out.println(" --> Last Vehicle: " + rear.number);
}
public void showPassedLog()
{
if (passedLog == null) {
System.out.println("\n No vehicles have passed the signal yet.");
return;
}
System.out.println("\n --> Passed Vehicles Log:");
Vehicle temp = passedLog;
while (temp != null)
{
System.out.println(" " + temp.number);
temp = temp.next;
}
}
}
public class TrafficSimulation
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
TrafficQueue tq = new TrafficQueue();
int choice;
String number;
do {
System.out.println("\n========== Traffic Light Simulation ========== ");
System.out.println("1. Vehicle Arrives");
System.out.println("2. Signal Turns Green (Vehicle Passes)");
System.out.println("3. Show Vehicles in Queue");
System.out.println("4. Count Waiting Vehicles");
System.out.println("5. Emergency Clear All Vehicles");
System.out.println("6. Search Vehicle by Number");
System.out.println("7. Show First and Last Vehicle");
System.out.println("8. Show Passed Vehicle Log");
System.out.println("9. Exit");
System.out.println("\n==================================== ");
System.out.print(" Choose an option: ");
choice = Integer.parseInt(sc.nextLine());
switch (choice)
{
case 1:
System.out.print(" Enter vehicle number: ");
number = sc.nextLine();
tq.arriveVehicle(number);
break;
case 2:
tq.passVehicle();
break;
case 3:
tq.displayQueue();
break;
case 4:
tq.countQueue();
break;
case 5:
tq.clearQueue();
break;
case 6:
System.out.print(" Enter vehicle number to search: ");
number = sc.nextLine();
tq.searchVehicle(number);
break;
case 7:
tq.showFirstAndLast();
break;
case 8:
tq.showPassedLog();
break;
case 9:
System.out.println("\n Exiting simulation. Goodbye!");
break;
default:
System.out.println("\n Invalid option. Try again.");
}
} while (choice != 9);
sc.close();
}
}
Tags: dsa javadsa java program traffic light simulationdsa java traffic light simulation projectdsa using javadsa using java programdsa using java projecttraffic light simulationtraffic light simulation using dsa java
DataFlair Team
DataFlair Team provides high-impact content on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. We make complex concepts easy to grasp, helping learners of all levels succeed in their tech careers.