数据结构中数组的问题,本人菜鸟,请教各位达达

wycmglq 2009-11-19 05:08:38

#ifndef ARRAY_H
#define ARRAY_H

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<stdarg.h>

#define MAX_ARRAY_DIM 8
#define OK 1
#define OVERFLOW -2
#define FALSE 0
#define TURN 1
#define ERROR 0

typedef char ElemType;
typedef int Status ;

typedef struct {
ElemType *base;//数组元素基址
int dim;//数组维数
int *bounds;//数组维界基址
int *constants;//数组映像函数基址
}Array;


Status InitArray(Array &A,int dim,...);
Status Locate(Array A,va_list ap,int &off);
#endif#include"ARRAY.h"

Status InitArray(Array &A,int dim,...)
{
int i; va_list ap;
if(dim<1 || dim>MAX_ARRAY_DIM)return ERROR;
A.dim=dim;
A.bounds=(int *)malloc(dim * sizeof(int));
if(!A.bounds) exit(OVERFLOW);
printf("数组基址分配成功\n");
int elemtotal=1;
va_start(ap,dim);
printf("数组维界基址分配:\n");
for(i=0;i<dim;i++)
{
A.bounds[i]=va_arg(ap,int);
if(A.bounds[i]<0)return OVERFLOW;
elemtotal*=A.bounds[i];
printf("----%d",A.bounds[i]);

}printf("\n");
va_end(ap);
printf("%d\n",elemtotal);

A.base=(ElemType *)malloc(elemtotal * sizeof(ElemType));
if(!A.base)exit(OVERFLOW);
A.constants=(int *)malloc(dim* sizeof(int));
if(!A.constants)exit(OVERFLOW);
printf("数组映像函数基址:\n");
A.constants[dim-1]=1;
for(i=dim-2;i>=0;i--)
{
A.constants[i]=A.constants[i+1] * A.bounds[i+1];
}
for(i=dim-1;i>=0;i--)printf("----%d",A.constants[i]);
printf("\n");
printf("数组创建成功\n");
return OK;
}

Status Locate(Array A,va_list ap,int &off){
off=0;
int i,ind;
//va_start(ap,int);
for(i=0;i<A.dim;i++)
{
ind=va_arg(ap,int);
if(ind<0 || ind>=A.bounds[i])return ERROR;
off=off+A.constants[i]*ind;
printf("----%d",off);
}
//va_end(ap);
return OK;
}



int main()
{
Array A;int off;
InitArray(A,5,6,6,4,4,4);
Locate(A,4,5,2,3,1,off);
}

各位达达,我就是Status Locate(Array A,va_list ap,int &off)参数不会使用,英文学得不好也看不懂帮助,希望能给予解答,在这小弟谢谢花时间在这种白痴问题上的老鸟们了~~
...全文
91 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧