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();
}
}