数据结构 有关多维数组的问题

问题描述

数据结构 有关多维数组的问题

int main(){
nArray A(2, 3, 4);
}
/******************************/
template
class nArray{
private:
aElem* base;
int dim;
int * bounds;
int * constants;
private:
Status Locate(va_list, int&);
public:
nArray(int, ...);
~nArray(){ if (base) delete[] base; if (bounds) delete[]base; if (constants) delete[]constants; }
Status Value(aElem&, ...);
Status Assign(aElem, ...);
};
template
nArray::nArray(int d, ...) :dim(d), base(nullptr), bounds(nullptr), constants(nullptr){
va_list ap;
va_start(ap, d);
int elemtotal = 1;
bounds = new int[dim];
constants = new int[dim];//运行到这行前,dim=2,貌似没问题,可是一到这行运行完,dim就变成了1323297024,并且有时程序崩溃出错,我实在找不到原因了,希望有前辈能指点下
for (int i = 0; i < dim; i++){
bounds[i] = va_arg(ap, int);
if (bounds[i] < 0) exit(UNDERFLOW);
elemtotal *= bounds[i];
}
va_end(ap);
base = new int[elemtotal];
if (!base) exit(OVERFLOW);
constants[dim - 1] = 1;
for (int i = dim - 2; i >= 0; --i)
constants[i] = constants[i + 1] * bounds[i + 1];
}
大学生,刚开始学,问题可能极低级,请见谅
还有因为没什么人指点,如果哪写的不妥,也都请一并指出来,我好好改正,谢谢啦

解决方案

《数据结构》第四章 字符串和多维数组 问题收集站
数据结构 第4章 字符串和多维数组
数据结构——字符串和多维数组

解决方案二:

http://blog.163.com/niwei_258/blog/static/106284882010830158497/

解决方案三:

http://download.csdn.net/download/hs794502825/2567278

时间: 2024-09-21 10:56:40

数据结构 有关多维数组的问题的相关文章

求助-数据结构二维数组问题

问题描述 数据结构二维数组问题 设二维数组A[1...m,1...n]按行存储在数组B中,则二维数组元素A[i,j]在一维数组B中的下标为() A.n*(i-1)+j B.n*(i-1)+j-1 C.i*(j-1) D.j*m+i-1 答案是A,想知道具体的做法和计算过程,谢谢了 解决方案 m行n列,每行有n个,下标(i,j),就是第i行从左至右第j个的位置,而从第一到第i-1行每行都有n个,已经有n*(i-1)个,所以再加上第i行的j就是了 解决方案二: 二维数组作为参数传递问题 解决方案三:

Java千百问_06数据结构(018)_多维数组如何储存在内存中

1.多维数组如何储存在内存中 了解一维数组如何储存看这里:java数组如何存储在内存中 从底层来看,数组元素可以存放引用类型,数组也是引用类型的一种.也就是说,在数组元素的内部还可以包含数组(如int[][] numbers = new int[length][]),即二维数组可当作一维数组(数组长度为length)来处理. 了解数组和普通引用对象在内存中的区别看这里:数组和普通对象的引用变量有什么区别 由此我们得出结论: 任何多维数组(维度为n,n>1)都可以当作一维数组,其数组元素为n-1维

Java千百问_06数据结构(017)_什么是二维数组

1.二维数组如何定义 Java语言中,多维数组被看作数组的数组.  了解一维数组看这里:java中的数组是什么  定义方式和一维数组类似,如下: type arrayName[ ][ ]: type [ ][ ]arrayName; 2.二维数组如何初始化 二维数组初始化和一维数组一样,分为静态初始化和动态初始化 静态初始化  Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同.初始化方式如下: int intArray[ ][ ]={{1

在java中一维数组和二维数组有什么区别吗?

问题描述 在java中一维数组和二维数组有什么区别吗? 求大神指点java中一维数组和二维数组的区别,为什么一位数组是一行 二维数组可以定义多行 解决方案 如图黑色的是一维数组红色的是二维数组一维数组用来存数据二维数组用来存一维数组 解决方案二: JAVA中一维数组和二维数组的定义一维数组及二维数组的用法java中arraylist和一维数组二维数组的转换 解决方案三: 一楼正解,一维和二维的区别就是线和面的区别,一维的数组你就可以通过一个下标来准确定位,而二维的就需要有两个就像坐标系一样,一维

二维数组-关于C语言的指针数组的问题

问题描述 关于C语言的指针数组的问题 老师说过 传递一个二维数组时 必须指定 第二维的 个数 才能正确索引 数组1维+1的位置 函数参数传递 都是写成这样 abc(int* array[10]) 但是看到main函数的 参数确是 int main(int argc, char* argv[], char* env[]) 这样写 能索引argv+1 的位置吗? 解决方案 当然可以,C语言是一种简陋和原始的语言,它简陋的程度对于用惯了高级编程语言的人来说匪夷所思,比如你完全可以越界访问数组,至于结果

存储-数据结构 动态配制 指针数组

问题描述 数据结构 动态配制 指针数组 使用命令行参数为学生总数(2).在标准输入中,在指令"输入氮名"时,输入一行的输入的数字(输入)的名称.使用二维动态分配将所有名称存储在一个变量中.打印输出结果在标准输出. 数据结构:指针数组 输入:名字 输出:氮名 条件: ?学生人数应该超过2个 使用动态分配存储的名字(malloc()) ?用户名称的长度应为30个字符 ?在名称中不允许空格 解决方案 #include <iostream> using namespace std;

PHP递归遍历多维数组实现无限分类的方法_php技巧

本文实例讲述了PHP递归遍历多维数组实现无限分类的方法.分享给大家供大家参考,具体如下: <?php //$data[]=array('id'=>1,'parentid'=>0,'name'=>'中国','img'=>'52091199'); $data[]=array('id'=>1,'parentid'=>0,'name'=>'中国'); $data[]=array('id'=>2,'parentid'=>0,'name'=>'美国')

Swift游戏开发之俄罗斯方块:No.3 二维数组

数组是一个很有用的数据结构,很多程序都建立在数组之上,我很少看到哪个应用程序不用到数组的. 而我们的俄罗斯方块显然也需要数组,而且是更为特殊的  二维数组. 为什么是二维数组呢?其实我们的整个游戏区域,可以看做是一个二维数组区域,就像这样: 我们的每一个block都占据在这样一个20x10的区域之内,20行,10列的一个200个block的二维数组让我们可以根据(x,y)坐标来确定block的位置,而这些blocks其实就是组成我们的L形,或者Z形 等等不同但我们都熟知的俄罗斯方块: swift

c语言-java的二维数组和C语言二维数组的储存结构有什么区别?

问题描述 java的二维数组和C语言二维数组的储存结构有什么区别? java的二维数组和C语言二维数组的储存结构有什么区别?,数据结构有什么区别吗?有人说java的数组在内存中存储不是连续的,, 解决方案 java二维数组的存储在内存中不一定连续.二维数组是一维的一维,也就是树形结构. 解决方案二: 个人认为是连续的,要支持随机访问,当然如果内存真的不是连续的,那就是vm的事情了 解决方案三: C语言是连续的,Java应该也是连续的吧,这个问题还真没深究过.