数据结构(一)

1.数据结构---数据在计算机中的存储和组织。

物理结构:线性存储和链式存储。

逻辑结构:数据的关系和联系,线性结构和非线性结构(树一对多,前继,后驱)。

数据结构和算法是伴生的,算法定义了数据的操作,操作数据。

没有最好,只有最合适---真相不只有一个。

2.时间复杂度:核心算法代码的执行次数。O(1)代表常数操作;O(n):n/c或a*n+c次操作。

3.动态内存申请(堆内存,要手动释放)。

4.内存泄露,申请的内存没有在用中却没释放。

5.二维数组的地址代表的含义,指针表示。

数组名与地址。

例如:a[3][3],a[0]代表“由4个整型元素所组成的一维数组”的首地址。

a[0],a[1],a[2]既然是一维数组名,则a[0]代表一维数组a[0]中第0列元素的地址,即&a[0][0];同理a[1]的值是&a[1][0],a[2]的值是&a[2][0];

那么a数组0行1列元素的地址怎么表示呢?a[0]是一维数组名,该一维数组中序号为1的元素的地址显然应该用a[0]+1来表示。

前已叙述,a[0]和*(a+0)等价,a[i]和*(a+i)等价.因此a[0]+1和*(a+0)+1都是&a[0][1].进一步分析,a[0][1]的值则为*(a[0]+1),*(*(a+0)+1)或者*(*a+1).

通用的表示:*(a[i]+j),*(*(a+i)+j)是a[i][j]的值.可以这样理解:行指针a纵向移动i到达到a+i,然后解引用得到*(a+i),即a[i]——列指针,然后列指针a[i]横向移动j步到达(a[i]+j)),最后解引用得到*(a[i]+j),即a[i][j]。

二维数组元素的地址

猜你喜欢

转载自www.cnblogs.com/SUMaywlx/p/10134474.html