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

📄 result.h

📁 用数据结构实现基本算法 用C++实现任务分配功能
💻 H
字号:
#define INIT_SIZE 1000     //定义解的数组的初始长度
#define ADD_SIZE 5         //定义解的数组每次追加分配的长度
#define MAX_D 10           //为问题矩阵设置空间大小 
//定义栈的数据元素的数据类型
typedef int SElemType;
#include "stack.h"
//实现解的数组的数据类型
typedef int Result[MAX_D+1];
typedef struct{
	Result *elem;
	int listsize;
	int top;
	}RList;
//**************************实现解的数组的各项操作*************
status InitRList(RList &a){
	//初始化解的数组
	//当为解的数组分配空间失败时返回出错信息
	a.elem=new Result[INIT_SIZE];
	if (!a.elem) return OVERFLOW;
	a.top=-1;
	a.listsize=INIT_SIZE;
	return OK;
}
status ClearRList(RList &a){
	//将解的数据清空,分配的空间保留
	if (!a.elem) return ERROR;
	a.top=-1;
	return OK;
}
status EnElem(Stack s,RList &a){
	//将栈中的解加入解的数组
	//当解的数组已满则为数组重新分配空间
	//当空间分配失败时返回出错信息
	int i,j;
	if (!a.elem) return ERROR;
	if (a.top==(a.listsize-1)){      //为数组重新分配空间
		Result *temp=a.elem;
		a.listsize+=ADD_SIZE;
		a.elem=new Result[a.listsize];
		if (!a.elem) return OVERFLOW;//空间分配失败时返回出错信息
		for(i=0;i<=a.top;i++)        //将原数组中的解复制进新的数组
			for(j=0;j<=a.elem[i][0];j++)
				a.elem[i][j]=temp[i][j];
        delete []temp;               //释放临时空间
	}
	//将栈中的解加入解的数组
	a.top+=1;
	for(i=1;i<=StackLength(s);i++)
		a.elem[a.top][i]=s.elem[i-1];
	a.elem[a.top][0]=StackLength(s);
	return OK;
}
status SaveResult(Stack s,double M,double vol,RList &r){
	//判断当前栈中的解是否是最佳解
	//如果是则将其加入解的数组
	//否则不进行任何操作
	//如果当前解优于数组中的解则将数组清空间当前解入解的数组
	if (vol>M) return OK;
	if (vol==M) {EnElem(s,r);return OK;}
	ClearRList(r);
	EnElem(s,r);
	return OK;
	}
status OutputResult(RList r){
	//格式输出解的数组中的各组解
	//当解的数组为空时则输出提示--无解
	int i,j;
	if (r.top==-1) {cout<<endl<<"No Answer !";return OK;}
	for(i=0;i<=r.top;i++){
		cout<<endl;
		for(j=1;j<=r.elem[i][0];j++) {
			cout<<"("<<j<<","<<r.elem[i][j]<<")";
			}
		}
	return OK;
}

⌨️ 快捷键说明

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