1、数据结构的起源
数据结构不是研究数值计算的,这是数学家应该研究的问题,数据结构是研究计算机存储、组织数据的方式问题的学科,数据结构会影响算法的效率,合适的数据结构可以带来更高的允许活存储效率。
凭借一句话获得图灵奖的Pascal之父——Nicklaus Wirth,让他获得图灵奖的这句话就是他提出的著名公式:“算法+数据结构=程序”。这个公式对计算机科学的影响程度足以类似物理学中爱因斯坦的质能方程。
2、数据结构的基本概念
数据(data):所有能输入到计算机中去的描述客观事物的符号。
数据项(data item):有独立含义的数据的最小单位,也称为域(field)。
数据元素(data element):数据结构的基本单位,也称为节点(node)或记录(record)。
数据结构(data structure):数据元素和数据元素关系的集合。
算法(algorithm):是对特定问题求解步骤的一种描述,是指令的有限序列。
typedef struct Student
{
char name[20]; // 结构成员就是数据项
int id;
short arg;
float score;
}Student;
int main()
{
Student stu = {"张三",1001,20,100};
// 结构变量 stu 就是数据元素
// 初始化的数值就是 数据
Student stu1[2] = {
{"张三",1001,20,100},
{"张三",1001,20,100}
};
// stu1结构体数组 就是数据结构的一种
//算法
for(int i=0; i<5; i++)
{
printf("%s %d %hd %f\n",stus[i].name,stus[i].id,stus[i].age,stus[i].score);
}
}
3、数据结构的三个方面
①、数据结构的逻辑关系:元素之间具有什么关系
逻辑结构描述了数据之间的关系和组织方式,不考虑具体的存储细节。常见的逻辑结构包括线性结构、树形结构和图形结构等。线性结构包括了数组、链表、栈和队列,树形结构包括了二叉树、堆和平衡树,图形结构包括了有向图和无相图等。
②、数据的存储结构:元素在内存中如何存储
存储结构定义了数据在计算机内存或外存中的表示方式。不同的存储结构可以影响数据的访问和操作效率。常见的存储结构有顺序存储和链式存储。顺序存储将数据元素存放在一段连续的内存空间中,可以通过下标访问元素,链式存储使用指针将数据元素链接在一起,可以灵活地插入、删除元素。
③、数据结构的算法:数据结构应具有的功能或擅长的功能
算法是解决特定问题的步骤和规则的描述。数据结构与算法密切相关,合适的数据结构可以提高算法效率。常见的数据结构算法包括遍历、搜索、插入、删除和排序等。选择合适的数据结构和算法可以优化程序的性能和资源利用情况。
综上所述,逻辑结构、存储结构和算法是数据结构的三个重要方面,它们共同构成了数据在计算机中的表示、组织和操作方式。