[데이터 구조] 배열 의 순서 저장 표시
2184 단어 대학원 시험 복습
#include
#include
#include
#define MAX_ARRAY_DIM 8 //
#define OK 1
#define ERROR 0
#define UNDERFLOW -1
#define OVERFLOW -2
typedef int ElemType;
typedef int Status;
typedef struct {
ElemType *base; //
int dim; //
int *bounds; //
int *constants; //
} array;
//
Status InitArray(array &a, int dim, ...){
if(dim<1 || dim>MAX_ARRAY_DIM){
return ERROR;
}
a.dim = dim;
a.bounds = (int *)malloc(dim*sizeof(int));
if(!a.bounds){
return ERROR;
}
int elemtotal = 1; //
va_list ap;
va_start(ap, dim);
for(int i=0; i=0; i--){
a.constants[i] = a.bounds[i+1] * a.constants[i+1]; //
}
return OK;
}
//
Status DestoryArray(array &a){
if(!a.base){
return ERROR;
}
free(a.base);
a.base = NULL;
if(!a.bounds){
return ERROR;
}
free(a.bounds);
a.bounds = NULL;
if(!a.constants){
return ERROR;
}
free(a.constants);
a.constants = NULL;
return OK;
}
// , off
Status Locate(array a, va_list ap, int &off){
off = 0;
int ind;
for(int i=0; i=a.bounds[i]){
return OVERFLOW;
}
off += a.constants[i] * ind;
}
return OK;
}
//
Status Value(array a, ElemType &e, ...){
va_list ap;
va_start(ap, e);
Status result;
int off;
if((result = Locate(a, ap, off)) <= 0){
return result;
}
va_end(ap);
e = *(a.base + off);
return OK;
}
//
Status Assign(array &a, ElemType &e, ...){
va_list ap;
va_start(ap, e);
Status result;
int off;
if((result = Locate(a, ap, off)) <= 0){
return result;
}
va_end(ap);
*(a.base + off) = e;
return OK;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2011 년 408 진 제] 선형 표.[문제 설명] 길이 가 L (L ≥ 1) 인 오름차 서열 S 로 [L / 2] 번 째 위치 에 있 는 수 를 S 의 중위 라 고 한다. 예 를 들 어 서열 S1 = (11, 13, 15, 17, 19) 이면 S1 의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.