数据结构小学期第二部分渡船管理模拟

渡船管理模拟
渡口的每条渡轮一次能装载6 辆汽车过江,车辆分为客车、鲜货车和普通货车3类,渡船管理规定;①同类汽车先到的先上船;②上船的优先级为:客车优先于鲜货车、鲜货车优先于普通货车;③每上3 辆客车才允许上2 辆鲜货车,然后再允许上1 辆货车。若等待的客车不足3 辆时,用鲜货车填补,当等待的鲜货车不足2 辆时,按用普通货车填补;当没有普通货车等待时,按客车优先于鲜货车的
原则填补;④当装满6 辆后则自动开船;⑤1 个小时为1 个周期,若周期结束仍不满载则应人为控制开船。
设计要求:b
(1) 模拟各类车辆到大渡口的情况;
(2) 模拟渡船开船的情况。
(3) 提供文件保存各类模拟数据,并提供基于文件的多种查询。

存储结构

#pragma once
#define MAXSIZE 100
#include
#define overflow -1
#define error -2
// 队列的顺序存储结构
typedef struct {
   
	int *base;
	int front;
	int rear;
}SQ;
//队列的初始化
void Initsq(SQ &S) {
   
	S.base = new int[MAXSIZE];
	if (!S.base) exit(overflow);
	S.front = 0; S.rear = 0;
}
int EnQueue(SQ &S, int e,int &m) {
   
	if ((S.rear + 1) % MAXSIZE == S.front)
		return error;
	
	S.base[S.rear] = e;

	S.rear = (S.rear + 1)%MAXSIZE;
	m++;
	return 1;
}
int DeQueue(SQ &S, int &e) {
   
	if (S.front == S.rear)return error;
	else {
   
		e = S.base[S.front];
		
		S.front = (S.front + 1) % MAXSIZE;

		return 1;
	}
}
int QueueEmpty(SQ S )
{
   
	if (S.front == S.rear)
	{
   
		return 1;

	}
	else
	{
   
		return 0;
	}
}


源.cpp

#include
#include
#include
#include
#include 
#include
using namespace std;
#include"存储结构.h"
int abus[100], afreshcar[100], atruck[100];
clock_t start, endy;
SQ bus, freshcar, truck;
void create() {
   //创建文件
	FILE *fp;
	char filename[3000];
	cout << "输入文件的位置路径和名称" << endl;
	cin >> filename;
	fp = fopen(filename, "w");
	if (fp == NULL)
	{
   
		cout << "创建失败!" << endl;
	}
	else cout << "创建成功!" << endl;
	fclose(fp);
}
void import(SQ &S,int &m) {
   //导入,读文件的内容到结构体

	string inputfilename;
	cout << "请输入要导入的文件路径:";
	cin >> inputfilename;
	ifstream in(inputfilename, ios::in);
	if (!in)
	{
   
		cout << "Error: opening file fail" << endl;
		exit(1);
	}
	int n =

你可能感兴趣的:(数据结构)