扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
数据结构 数组顺序存储
创新互联专注于随县企业网站建设,响应式网站建设,成都商城网站开发。随县网站建设公司,为随县等地区提供建站服务。全流程按需制作网站,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务最近学习数据结构,看到数组顺序存储,很是头昏,看不懂,很多东西,这里在网上找了比较详细的资料,大家好好看注释内容:
#include#define MAX_ARRAY_DIM 8 //假设数组维数的大值为8 typedef struct { ElemType *base; //数组元素基址,由InitArray分配 int dim; //数组维数 int *bounds; //数组维界基址,由InitArray分配 int *constants; //数组映象函数常量基址,由InitArray分配 }Array; Status InitArray(Array &A,int dim,...){//这里用的是“可变参”形参方式。它主要解决维数不定的问题。 //举例:设有4维数组,各维分别是:4,5,6,7(这些数字是随意给的),那么,调用方式: //InitArray(ar, 4, 4, 5, 6, 7); //ar其中,ar也是假设的变量名称, 4表示数组有4维, 4, 5, 6, 7这4个数是各维大小 //如果是5维的,那么就这样: //InitArray(ar, 5, 第一维数,第二维数,第三维数,第四维数,第五维数); //若维数dim和随后的各维长度合法,则构造相应的数组A,并返回OK。 if (dim<1 ||dim>MAX_ARRAY_DIM) return ERROR; A.dim=dim; A.bounds=(int *)malloc(dim*sizeof(int)); if (!A.bounds) exit(OVERFLOW); //若各维长度合法,则存入A.bounds,并求出A的元素总数elemtotal。 elemtotal=1; va_start(ap,dim); //ap为va_list类型,是存放变长参数表信息的数组。 for (i=0;i =0;--i)//A.constants[2] = 7,A.constants[1] = 6*7,A.constants[0] = 5*6*7 A.constants[i]=A.bounds[i+1] * A.constants[i+1]; //说到这里,这个问题就清晰了:A.constants中的元素,是帮助定位用的。比如说:对于(2,0,0,0)这个下标的元素,应该越过前面的(0,0,0,0)~(0,4,5,6)和(1,0,0,0)~(1,4,5,6)这两大块,而这两大块中的每一块都有5*6*7个元素,这正好就是A.constants[0]中所存放的数据啊! //现在应该明白了吧! return OK; } status Locate(Array A,va_list ap,int &off){ //若ap指示的各下标值合法,则求出该元素在A中相对地址off。 off=0; for (i=0;i =A.bounds[i]) return OVERFLOW; off + = A.constants[i] * ind; } return OK;
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流