一维数组存储缺点,使用一维数组有哪些优势

seosqwseo6个月前 (05-21)测评日记61

一、C语言怎么用指针代替二维数组

1.设p是指向二维数组a[m][n]的指针变量,则有:

int* p=a[0];//此时P是指向一维数组的指针。P++后,p指向 a[0][1]。

2.如果定义int(*p1)[n];p1=a;p1++后,p1指向a[1][0];

则p+j将指向a[0]数组中的元素a[0][j]。

由于a[0]、a[1]┅a[M-1]等各个行数组依次连续存储,则对于a数组中的任一元素a[i][j],指针的一般形式如下:

p+i*N+j,相应的如果用p1来表示,则为*(p1+i)+j。

元素a[i][j]相应的指针表示为:

*( p+i*N+j),相应的如果用p1来表示,则为*(*(p1+i)+j)。

同样,a[i][j]也可使用指针下标法表示,如p[i*N+j]。

若有:

int*p=a[0];

则数组a的元素a[1][2]对应的指针为:p+1*4+2

元素a[1][2]也就可以表示为:*( p+1*4+2)

用下标表示法,a[1][2]表示为:p[1*4+2]

扩展资料:

指针与数组的关系:

1.指针数组:就是一个由指针组成的数组,那个数组的各个元素都是指针,指向某个内存地址。char*p[10];//p是一个指针数组

2.数组指针:数组名本身就是一个指针,指向数组的首地址。注意这是一个常数。

example:

char(*p)[10];//p是一个数组指针

3.函数指针:本身是一个指针,指向一个函数入口地址,通过该指针可调用其指向的函数,使用函数指针可实现回调函数。

参考资料:

百度百科-指针

二、树的存储形式

树的存储形式如下:

树的存储形式有双亲表示法、孩子表示法、孩子兄弟表示法。双亲表示法的特点:由于根结点是没有双亲的,约定根结点的位置位置域为-1。

根据结点的parent指针很容易找到它的双亲结点。所用时间复杂度为0(1),直到paren为-1时,表示找到了树结点的根。缺点:如果要找到孩子结点,需要遍历整个结构才行。

孩子表示法定义:把每个结点的孩子结点排列起来,以单链表作为存储结构,则n个结点有n个孩子链表,如果是叶子结点则此单链表为空。然后n个头指针又组成一个线性表,采用顺序存储结构,存放进一个一维数组中。

双亲孩子表示法定义:对于孩子表示法,查找某个结点的某个孩子,或者找某个结点的兄弟,只需要查找这个结点的孩子单链表即可。但是当要寻找某个结点的双亲时,就不是那么方便了。所以可以将双亲表示法和孩子表示法结合形成双亲孩子表示法。

优缺点:

双亲表示法:该种方法寻找一个节点的双亲结点比较方便,但是对于寻找一个节点的孩子节点*作实现却不太方便。

孩子表示法:该方法寻找一个节点的孩子节点*作比较方便,但是寻找一个结点的双亲结点就比较麻烦了。

双亲孩子表示法:该存储结构具有双亲表示法和孩子表示法两种存储结构优点,到*作实现比较麻烦。

孩子兄弟表示法:该存储结构其实就是把树转换为一个二叉树的形式去存储,实现比较方便。

三、使用一维数组有哪些优势

1、数组,顾名思义,是相同类型的数组成的一个组,也就是说是把相同类型的一系列数据统一编制到某一个组别中。这样就可以通过数组名+索引号简单快捷的*作大量数据。这就和全校学生一样,把学生分成多个班级,每个学生都是班级中的一员,如果要找张三,如果没有班级的话,就要在全校学生中一个一个寻找,一直到找到为止;但是如果引入了班级,就可以在某某班级中寻找张三,这样就更加方便快速了。

2、一般有四种数组定义方式,以一维数组为例:

//定义指定维数的数组

int arr[10];

//定义不指定维数的数组,数组维数有初化列表元素个数决定。

int arr[]={1,2,4};

//定义指定维数的数组,初始化不完全时,系统将未初始化元素初始化为0

int arr[10]={1,2};

//动态分配一个数组。下面分配了一个有10个元素的数组。

int*arr=(int*) malloc(10* sizeof(int));

四、设对称矩阵A压缩存储在一维数组B中

首先由 a52能够得到的信息有:

针对特殊的矩阵压缩的方式是存储下三角,而且下三角计算一维数组的下标是:k=i(i+1)/2+j

由a11存储在B[0]可以知道从1开始存储,计算时需要减1

a36位于上三角中,对应的下三角的点是a63,在根据公式就能算出下标,注意一定要找到下三角的点

相关文章

海信电视65E3G-PRO质量测评好不好

海信电视65E3G-PRO质量测评好不好

很多小伙伴在关注海信电视65E3G-PRO怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

小米(MI)Redmi75英寸平板电视4K高清120Hz高刷MEMC动补远场语音智能金属全面屏全景声投屏使用反馈分享

小米(MI)Redmi75英寸平板电视4K高清120Hz高刷MEMC动补远场语音智能金属全面屏全景声投屏使用反馈分享

很多小伙伴在关注小米(MI)Redmi75英寸平板电视4K高清120Hz高刷MEMC动补远场语音智能金属全面屏全景声投屏怎么样?质量好不好?使用测评如何?本文综合已购用户的...

小米(MI)小米Redmi怎么样

小米(MI)小米Redmi怎么样

很多小伙伴在关注小米(MI)小米Redmi怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

TCL电视65V8E使用感受如何

TCL电视65V8E使用感受如何

很多小伙伴在关注TCL电视65V8E怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

闪魔苹果手表膜apple质量怎么样

闪魔苹果手表膜apple质量怎么样

很多小伙伴在关注闪魔苹果手表膜apple怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

萤石(EZVIZ)C6c价格多少钱

萤石(EZVIZ)C6c价格多少钱

很多小伙伴在关注萤石(EZVIZ)C6c怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...