数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。
数据结构是ADT(抽象数据类型 Abstract dataype)的物理实现。
数据结构( data structure)是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构订以带来最优效率的算法。
1.解决问题方法的效率,跟数据的组织方式有关
例.写程序实现一个函数 PrintN,使得传入一个正整数为N的参数后,能顺序打印从1到N的全部正整数
循环实现:
void PrintN ( int N)
{ int i;
for ( i=1; i<=N; i++ ){
printf ("%d\n’’, i );
}
return;
}
递归实现:
void PrintN ( int N)
{ if (N ) {
printf(’’%d\n,N);
}
return;
}
令N=100,1000,10000,100000,…
【当N极大时,递归代码实现时会直接罢工。(可运行上述程序加以实现)
递归代码简洁、清楚、极易理解,但是也极占空间。】
2.解决问题方法的效率,跟空间的利用效率有关
clock():捕捉从程序开始运行到clock( )被调用时所耗费的时间。这个时间单位是 clock tick,即"时钟打点’’。
常数 CLK_TCK(或 CLOCKS_PER_SEC):机器时钟每秒所走的时钟打点数。
include <stdio. h>
include<time.h>
clock_t start, stop;
/*clock_t是clock()函数返回的变量类型 */
double duration;
/*记录被测函数运行时间,以秒为单位 */
int main()
{ /*不在测试范围内的准备工作写在clock()调用之前 */
start =clock( ); /*开始计时 */
MyFunction( ); /*把被测函数加在这里 */
stop =clock( ); /*停止计时 */
duration =((double)(stop start))/CLK_TCK;
/*计算运行时间 */
/*其他不在测试范围的处理写在后面,例如输出 duration的值 */
return 0;
}
3.解决问题方法的效率,跟算法的巧妙关系有关
所以到底什么是数据结构???
数据对象在计算机中的组织方式
逻辑结构;
物理存储结构.
数据对象必定与一系列加在其上的操作相关联
完成这些操作所用的方法就是算法
抽象数据类型( Abstract Data Type)
数据类型
数据对象集;
数据集合相关联的操作集
抽象:描述数据类型的方法不依赖于具体实现
与存放数据的机器无关;
与数据存储的物理结构无关;
与实现操作的算法和编程语言均无关.
只描述数据对象集和相关操作集“是什么”,并不涉及“如何做到”的问题