⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 车厢调度算法 具体的算法的演示和实现,数据结构的课程设计
💻 CPP
字号:
#include "stdio.h"
#include "Stack.h"
#include "conio.h"
//主程序和Sever函数
void Sever(TwStack &S,int tou,int now,int wei,char ch)
{
//求所有输出序列
	int x;
	if(StackEmpty(S,0)&&now>wei)      //如果栈为空,而且输入序列为空
	{
		if(ch=='1')                   //打印输出序列,根据显示模式ch的值,选择不同的打印方式
			PrintStack1(S,tou,wei);
		else 
			PrintStack2(S,tou,wei);
		return ;
	}
	if(!StackEmpty(S,0))             //如果栈不空
	{
		Pop(S,0,x);                  //一个车厢a出调度站栈;
		Push(S,1,x);                 //并把该车厢a进输出序列栈,即进上栈,代表已输出;  
		Sever(S,tou,now,wei,ch);     //递归Sever(参数不变)
		Pop(S,1,x);                  //还原操作,即把车厢a从输出序列栈中退栈,
		Push(S,0,x);                 //并压回调度站栈
	}
	if(now<=wei)                     //如果输入序列不空
	{
		Push(S,0,now);               //一个车厢进b调度站栈
		Sever(S,tou,now+1,wei,ch);   //递归Sever(改变参数:当前输入车厢编号c+1)
		Pop(S,0,x);                  //还原操作,即把车厢b从调度站栈中退栈
	
	}
}
	
	






void main()
{
	TwStack S;
	char ch,again;
	int tou,wei;
	InitStack(S);
	do{
		printf("****************************** 车厢调度演示 *******************************\n");
		printf("输入头车厢编号:");
		scanf("%d",&tou);
		printf("输入尾车厢编号: ");
		scanf("%d",&wei);
		printf("\t显示模式 1: 简单显示输出的车厢序列\n");               //提供了两种显示模式
		printf("\t显示模式 2:显示每一个序列的输出操作序列和状态变化过程\n");
		printf("选择一种模式: \n");
		while((ch=getch())!='1'&&ch!='2');
		if(wei>9&&ch=='2')                          //用户输入的车厢编号的位数太高,长度太长
		{											//系统内部强制性转换
			printf("因为车厢编号不是个位数1~9,不能用显示模式2,只能用简单模式1显示\n");
			printf("按任意键确认\n");
			ch='1';
			getch();
		}
		Sever(S,tou,tou,wei,ch);
		printf("******* 继续吗?(y or n)*********\n\n\n");
		while((again=getch())!='y'&&again!='Y'&&again!='n'&&again!='N');
	}while(again=='y'||again=='Y');
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -