shreyagpj/DSA_evas
GitHub: shreyagpj/DSA_evas
基于 C 语言的紧急车辆调度模拟器,通过图路由、优先级队列和哈希表等数据结构演示城市级紧急事件中的最近车辆分配问题。
Stars: 0 | Forks: 0
# 🚑 紧急车辆分配系统 (EVAS)
一个基于 C 语言的紧急调度模拟器,它通过图路由、优先级调度和高效的查找结构,将最近的可用车辆分配给传入的事件。
## 概述
该模拟器模拟了一个简化的紧急响应中心。紧急请求被放入优先级队列中,车辆通过注册表进行跟踪,并使用 Dijkstra 最短路径算法在道路网络图上选择最近的可用单元。
## 功能
- 交互式终端界面
- 基于邻接表图的道路网络
- Dijkstra 最短路径路由
- 最小堆请求队列
- 哈希表车辆注册表
- 链表调度日志
- 自动分配最近车辆
- 调度统计跟踪
- 模块化多文件 C 架构
## 核心 DSA 概念
| 概念 | 实现方式 |
| ---------------- | ---------------------- |
| 道路网络 | 邻接表图 |
| 路由 | Dijkstra 算法 |
| 车辆注册表 | 哈希表 |
| 请求队列 | 最小堆 |
| 调度历史 | 单链表 |
| 分配 | 贪婪最近车辆 |
## 时间复杂度
| 操作 | 复杂度 |
| ------------------ | -------------------- |
| 车辆查找 | 平均 O(1) |
| 插入请求 | O(log n) |
| 移除请求 | O(log n) |
| 调度日志记录 | O(1) |
| 路由计算 | O((V + E) log V) |
| 车辆分配 | O(k · (V + E) log V) |
_k = 评估的可用车辆数量。_
## 构建与运行
### 使用 Make
```
make
./evas
```
### GCC (不使用 Make)
```
cd evas
gcc -std=c11 -Wall -Wextra -Wpedantic -Iinclude src/main.c src/graph.c src/vehicle.c src/request.c src/log.c src/allocate.c src/ui.c -o evas.exe
./evas.exe
```
### Windows PowerShell
```
cd evas
gcc -std=c11 -Wall -Wextra -Wpedantic -Iinclude src/main.c src/graph.c src/vehicle.c src/request.c src/log.c src/allocate.c src/ui.c -o evas.exe
.\evas.exe
```
## 项目结构
```
evas/
├── Makefile
├── README.md
├── include/
│ ├── graph.h
│ ├── vehicle.h
│ ├── request.h
│ ├── log.h
│ ├── allocate.h
│ └── ui.h
└── src/
├── main.c
├── graph.c
├── vehicle.c
├── request.c
├── log.c
├── allocate.c
└── ui.c
```
## 技术
- C11
- GCC
- C 标准库
- 无外部依赖
## 状态
这是一个学生数据结构与算法项目,在实际的资源分配系统中演示了图、堆、哈希表、链表和最短路径路由。
标签:图论算法, 客户端加密, 数据结构, 调度模拟器, 路径规划, 迪杰斯特拉算法