重新进行了概要设计
This commit is contained in:
@@ -25,19 +25,9 @@ typedef struct bus bus_t;
|
||||
* 每个时刻使公交车前进
|
||||
* @param rails 轨道链表
|
||||
* @param direction 公交车前进的方向
|
||||
* @param bus 公交车
|
||||
* @return 公交车是否到达站点
|
||||
*/
|
||||
int RunBus(rail_node_t* rails, int direction);
|
||||
int RunBus(rail_node_t* rails, bus_t bus, int direction);
|
||||
|
||||
/**
|
||||
* 处理上车请求
|
||||
* @param rail_node 当前所在的站点
|
||||
*/
|
||||
void UpBus(rail_node_t* rail_node);
|
||||
|
||||
/**
|
||||
* 处理下车请求
|
||||
* @param rail_node 当前所在的站点
|
||||
*/
|
||||
void DownBus(rail_node_t* rail_node);
|
||||
#endif //AUTO_PILOT_BUS_BUS_H
|
||||
|
@@ -7,26 +7,6 @@
|
||||
#include "rail.h"
|
||||
#include "query.h"
|
||||
|
||||
enum read_state{
|
||||
/**
|
||||
* 时钟
|
||||
*/
|
||||
io_clock = 0,
|
||||
/**
|
||||
* 读取中
|
||||
*/
|
||||
io_reading,
|
||||
/**
|
||||
* 结束
|
||||
*/
|
||||
end
|
||||
};
|
||||
|
||||
/**
|
||||
* 读取输入的状态
|
||||
*/
|
||||
typedef enum read_state read_state_t;
|
||||
|
||||
/**
|
||||
* 读取配置文件,创建轨道链表,同时读取需要使用的策略
|
||||
* @return 指向轨道链表的指针
|
||||
@@ -38,12 +18,13 @@ rail_node_t* ReadConfigFile();
|
||||
* @param inputString 输入的字符串
|
||||
* @return 当前读取的状态
|
||||
*/
|
||||
read_state_t ReadInput(char* inputString);
|
||||
int ReadInput(char* inputString);
|
||||
|
||||
/**
|
||||
* 打印当前的状态
|
||||
* @param rails 轨道链表
|
||||
* @return 返回需输出的字符串
|
||||
*/
|
||||
void PrintState();
|
||||
char* PrintState();
|
||||
|
||||
#endif //AUTO_PILOT_BUS_BUS_IO_H
|
||||
|
@@ -4,34 +4,72 @@
|
||||
|
||||
#ifndef AUTO_PILOT_BUS_CONTROLLER_H
|
||||
#define AUTO_PILOT_BUS_CONTROLLER_H
|
||||
#include "stdlib.h"
|
||||
|
||||
#include "rail.h"
|
||||
#include "query.h"
|
||||
#include "bus.h"
|
||||
|
||||
/**
|
||||
* 先来先服务的策略控制函数
|
||||
* @param rails 轨道链表
|
||||
* @param up_queries 上车请求队列
|
||||
* @param down_queries 下车请求队列
|
||||
* @return 车前进的方向
|
||||
* 全局的时间计数器
|
||||
*/
|
||||
int FCFSFunction(rail_node_t rails, up_bus_t up_queries, down_bus_t down_queries);
|
||||
extern int BUS_TIME;
|
||||
|
||||
/**
|
||||
* 最短寻找时间优先的策略控制函数
|
||||
* @param rails 轨道链表
|
||||
* @param up_queries 上车请求队列
|
||||
* @param down_queries 下车请求队列
|
||||
* @return 车前进的方向
|
||||
* 当前正在处理的请求
|
||||
*/
|
||||
int SSTFFunction(rail_node_t rails, up_bus_t up_queries, down_bus_t down_queries);
|
||||
extern bus_query_t *target_query;
|
||||
|
||||
/**
|
||||
* 顺便服务的策略控制函数
|
||||
* @param rails 轨道链表
|
||||
* @param up_queries 上车请求队列
|
||||
* @param down_queries 下车请求队列
|
||||
* @return 车前进的方向
|
||||
* 时间增加
|
||||
*/
|
||||
int SCANFunction(rail_node_t rails, up_bus_t up_queries, down_bus_t down_queries);
|
||||
void AddTime();
|
||||
|
||||
/**
|
||||
* 在先来先服务策略下应该前进的方向
|
||||
* @param bus 公交车
|
||||
* @param queries 请求队列链表
|
||||
* @return 前进的方向
|
||||
*/
|
||||
int FCFSDirection(bus_t bus, bus_query_t queries);
|
||||
|
||||
/**
|
||||
* 在先来先服务策略下给出处理的请求
|
||||
* @param bus 公交车
|
||||
* @param queries 请求队列链表
|
||||
* @return 需要处理的请求
|
||||
*/
|
||||
bus_query_t FCFSQuery(bus_t bus, bus_query_t queries);
|
||||
|
||||
/**
|
||||
* 在最短寻找时间策略下应该前进的方向
|
||||
* @param bus 公交车
|
||||
* @param queries 请求队列链表
|
||||
* @return 前进的方向
|
||||
*/
|
||||
int SSTFDirection(bus_t bus, bus_query_t queries);
|
||||
|
||||
/**
|
||||
* 在最短寻找时间策略给出处理的请求
|
||||
* @param bus 公交车
|
||||
* @param queries 请求队列链表
|
||||
* @return 需要处理的请求
|
||||
*/
|
||||
bus_query_t SSTFQuery(bus_t bus, bus_query_t queries);
|
||||
|
||||
/**
|
||||
* 顺便服务的前进方向
|
||||
* @param bus 公交车
|
||||
* @param queries 请求队列链表
|
||||
* @return 前进的方向
|
||||
*/
|
||||
int SCANDirection(bus_t bus, bus_query_t queries);
|
||||
|
||||
/**
|
||||
* 顺便服务的策略处理
|
||||
* @param bus 公交车
|
||||
* @param queries 请求队列链表
|
||||
* @return 需要处理的请求
|
||||
*/
|
||||
bus_query_t SCANQuery(bus_t bus, bus_query_t queries);
|
||||
#endif //AUTO_PILOT_BUS_CONTROLLER_H
|
||||
|
@@ -5,9 +5,14 @@
|
||||
#ifndef AUTO_PILOT_BUS_DEFINE_H
|
||||
#define AUTO_PILOT_BUS_DEFINE_H
|
||||
|
||||
#define CLOCK_WISE 0
|
||||
#define COUNTER_CLOCK_WISE 1
|
||||
#define TRUE 1
|
||||
#define FAlSE 0
|
||||
#define BUS_CLOCK_WISE 0 // 顺时针
|
||||
#define BUS_COUNTER_CLOCK_WISE 1 // 逆时针
|
||||
#define BUS_TARGET 2 // 目标
|
||||
#define BUS_STOP 2 // 停止
|
||||
#define BUS_TRUE 1 // 真
|
||||
#define BUS_FAlSE 0 // 假
|
||||
#define IO_CLOCK 0 // 读取时钟指令
|
||||
#define IO_READING 1 // 读取请求指令
|
||||
#define IO_END 2 // 读取结束指令
|
||||
|
||||
#endif //AUTO_PILOT_BUS_DEFINE_H
|
||||
|
@@ -7,76 +7,42 @@
|
||||
#include "stdlib.h"
|
||||
#include "rail.h"
|
||||
|
||||
struct up_bus {
|
||||
struct bus_query {
|
||||
/**
|
||||
* 请求的序号
|
||||
* 请求产生的时间
|
||||
*/
|
||||
int id;
|
||||
int time;
|
||||
/**
|
||||
* 请求前往的方向
|
||||
* 请求的类型
|
||||
*/
|
||||
int direction;
|
||||
int type;
|
||||
/**
|
||||
* 请求上车的地点
|
||||
* 请求产生/指向的站点
|
||||
*/
|
||||
rail_node_t* target;
|
||||
struct up_bus* next;
|
||||
rail_node_t node;
|
||||
};
|
||||
|
||||
struct down_bus {
|
||||
/**
|
||||
* 请求的序号
|
||||
*/
|
||||
int id;
|
||||
/**
|
||||
* 请求下车的地点
|
||||
*/
|
||||
rail_node_t* target;
|
||||
struct down_bus* next;
|
||||
};
|
||||
typedef struct bus_query bus_query_t;
|
||||
|
||||
/**
|
||||
* 表示上车请求的结构体
|
||||
* 创建请求
|
||||
* @param query 请求链表队列
|
||||
* @param type 请求的类型
|
||||
* @param node 请求产生/指向的站点
|
||||
*/
|
||||
typedef struct up_bus up_bus_t;
|
||||
/**
|
||||
* 表示下车请求的结构体
|
||||
*/
|
||||
typedef struct down_bus down_bus_t;
|
||||
void CreateQuery(bus_query_t query, int type, rail_node_t node);
|
||||
|
||||
/**
|
||||
* 全局的上车请求链表头节点地址,也就是当前未处理的首个请求
|
||||
* 删除请求
|
||||
* @param query 请求链表队列
|
||||
* @param target_query 需要删除的请求
|
||||
*/
|
||||
extern up_bus_t *up_queries;
|
||||
void DeleteQuery(bus_query_t query, bus_query_t target_query);
|
||||
|
||||
/**
|
||||
* 全局的下车请求链表头节点地址,也就是当前未处理的首个请求
|
||||
* 释放请求链表占据的空间
|
||||
* @param queries 请求链表的头节点
|
||||
*/
|
||||
extern down_bus_t *down_queries;
|
||||
|
||||
/**
|
||||
* 创建一个上车请求
|
||||
* @param target 上车的地点
|
||||
* @param direction 需要前往的方向
|
||||
*/
|
||||
void CreateUpBusQuery(rail_node_t* target, int direction);
|
||||
|
||||
/**
|
||||
* 删除一个上车请求
|
||||
* @param id 需要删除的请求编号
|
||||
*/
|
||||
void DeleteUpBusQuery(int id);
|
||||
|
||||
/**
|
||||
* 创建一个下车请求
|
||||
* @param target 需要下车的地点
|
||||
*/
|
||||
void CreateDownBusQuery(rail_node_t *target);
|
||||
|
||||
/**
|
||||
* 删除一个下车请求
|
||||
* @param id 需要删除的请求编号
|
||||
*/
|
||||
void DeleteDownBusQuery(int id);
|
||||
void FreeQueries(bus_query_t queries);
|
||||
|
||||
#endif //AUTO_PILOT_BUS_QUERY_H
|
||||
|
@@ -33,14 +33,29 @@ typedef struct rail_node rail_node_t;
|
||||
/**
|
||||
* 全局的轨道链表头节点,也就是第一个公交站
|
||||
*/
|
||||
extern rail_node_t* rails;
|
||||
extern rail_node_t *rails;
|
||||
|
||||
/**
|
||||
* 查找指定编号的站点指针
|
||||
* @param rails 轨道的头节点地址
|
||||
* @param id 需要查找的站点编号
|
||||
* @return 需要查找站点指针
|
||||
*/
|
||||
rail_node_t *FindNode(int id);
|
||||
rail_node_t *FindNode(rail_node_t rails, int id);
|
||||
|
||||
/**
|
||||
* 创建轨道列表
|
||||
* @param length 站点之间的距离
|
||||
* @param node_num 站点的个数
|
||||
* @return 指向首站的指针
|
||||
*/
|
||||
rail_node_t *CreateRails(int length, int node_num);
|
||||
|
||||
/**
|
||||
* 释放分配的内存空间
|
||||
* @param railNode 轨道链表的头节点
|
||||
*/
|
||||
void FreeRails(rail_node_t railNode);
|
||||
|
||||
int add(int a, int b);
|
||||
|
||||
|
Reference in New Issue
Block a user