C语言数据结构之离散事件模拟的实现代码(银行排队事件)

该博客介绍了一个使用C++实现的银行窗口服务系统,包括事件结构体、顾客结构体、队列和链表操作。系统通过事件表管理客户到达和离开,模拟四窗口服务,随机生成客户到达时间和业务处理时间。程序还包括了初始化、入队、出队等操作,以及事件的排序和插入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结果:结果
IDE:Visual Studio 2019
声明:为了方便书写代码,用到了C++的引用调用特性和iostream作为输入输出,读者可以使用指针调用和scanf_s/print语句实现相同效果
tips:有疑问可以在下面交流,我会尽量回复的

头文件heads.h

#pragma once
#include "stdio.h"
#include "iostream"
#include "time.h"
#define OK 1
#define TRUE 1
#define FALSE 0
#define ERROR 0
#define OVERFLOW -1
typedef short int Status;
using namespace std;
//事件的结构体
typedef struct {
   
	int Occurtime;
	int NType;
}Event,ElemType;
//顾客的结构体
typedef struct {
   
	int Arrivaltime;
	int Duration;
}Customer, QElemType;
//窗口前的顾客
typedef struct LNode {
   
	QElemType data;
	struct LNode* next;
}LNode,*Link;
//窗口
typedef struct {
   
	Link front, rear;
	int len;
}Cust;
//事件表
typedef struct Node{
   
	ElemType data;
	struct Node* next;
}*LinkList,*Eventlist,Node;
//程序主要变量
Eventlist ev;
Event en;
Cust q[5];
QElemType customer;
int TotalTime, CustomerNum, durtime, intertime;
int CloseTime = 480;//关门时间

头文件LNode.h

带头结点的链表,用来作为事件表,熟悉链表操作的建议不看

#include"heads.h"
//1.表的初始化
Status InitLNode(LinkList& L) {
   
	L = (LinkList)malloc(sizeof(LNode));
	L->next = NULL;
	return OK;
}//InitLNode
//2.销毁
Status DestoryLNode(LinkList& L) {
   
	LinkList p, q = L->next;
	while (q != NULL) {
   
		p = q->next;
		free(q);
		q = p;
	}
	L->next = NULL;
	return OK;
}//第一种写法
Status Destory(LinkList& L) {
   
	LinkList p;
	while (L->next != NULL) {
   
		p = L->next;
		L->next = p->next;
		free(p);
	}
	L->next = NULL;
	return OK;
}//第二种写法
Status Empty(LinkList L) {
   
	return (L->next == NULL) ? TRUE : FALSE;
}
//5.返回表的长度
Status Length(LinkList L) {
   
	int len = 0;
	LinkList head = L->next;
	while (head != NULL) {
   
		head = head->next;
		len++;
	}
	return len;
}
//6.查找第i个元素
Status GetDate(LinkList L
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值