【c语言】数据结构绪论

1.数据结构的研究内容

数据结构是一门研究非数值计算程序设计中的操作对象,以及对象之间的关系和操作的学科。

2.数据结构的基本概念和术语

2.1 数据、数据元素、数据项和数据对象

2.1.1 数据(Data)

是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。

2.1.2 数据元素(Data Element)

是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。数据元素用于完整的描述一个对象。

2.1.3 数据项(Data Item)

是组成数据元素的、有独立含义的、不可分割的最小单位

2.1.4 数据对象(Data Object)

是性质相同的数据元素的集合,是数据的一个子集

2.2 数据结构

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
数据结构包括逻辑结构和存储结构两个层次。

2.2.1 逻辑结构

逻辑结构是从具体具体问题中抽象出来的数学模型,从逻辑关系上描述数据,它与数据的存储无关。根据数据元素之间关系的不同特性,数据结构通常有四类基本逻偶辑结构:
1.集合结构:指数据之间除了“同属于一个集合”的关系以外别无其他关系。
2.线性结构:指该数据结构中的元素之间存在一对一的关系。
3.树形结构:指该结构中的数据元素存在一对多的关系。
4.图形结构:指该结构中的数据元素存在多对多的关系。
其中集合结构、树结构和图结构或网状结构属于非线性结构

2.2.2 存储结构构

存储结构是逻辑结构在计算机中的存储表示,有四类存储结构:
1.顺序存储结构:采用一组连续的存储单元存放所有的数据元素。即所有数据元素在存储器中占有一整块存储空间,而且两个逻辑上相邻的元素在存储器中的存
储位置也相邻。
优点:存储效率高,通过下标来直接存储
缺点:不便于数据修改,对元素的插入或删除操作可能需要移动一系列的元素
2.链式存储结构:每个逻辑元素用一个内存结点存储,每个结点是单独分配的,所有的结点的地址不一定是连续的。通过指针域将所有结点链接起来。
优点:便于数据修改,对元素进行插入或删除操作只需修改相应结点的指针域,不必移动结点。
缺点:存储空间的利用率低,不能对元素进行随机存取。
3.索引存储结构:指在存储数据元素信息的同时还建立附加的索引表。存储所有数据元素信息的表称为主数据表,其中每个数据元素有一个关键字和对应的存储地
址。
优点:查找效率高。
缺点:需要建立索引表,增加了空间开销。
4.哈希(或散列)存储结构:根据元素的关键字通过哈希(或散列:函数直接计算出一个值,并将这个值作为该元素的存储地址。
优点:查找速度快
一般适合要求对数据能够进行快速查找和插入的场合

3.数据类型和抽象数据类型

3.1 数据类型(Data Type)

数据类型是一个值的集合定义在这个值集上的一组操作的总称。

3.2 抽象数据类型(Abstract Data Type,ADT)

抽象数据类型是指由用户定义的、表示应用问题的数学模型,以及定义在模型上的一组操作的总称,具体包括三个部分:数据对象、数据对象上关系的集合,以及数据对象的基本操作的集合

4.算法和算法分析

4.1 算法的定义及特性

算法是为了解决某类问题而规定的一个有限长的操作序列。
一个算法必须有以下5个重要特征:
1.有穷性:一个算法必须总是在执行又穷步后结束,且每一步都必须在有穷的时间内完成。
2.确定性:对于每种情况下所应执行的操作,在算法中都有确切的规定,不会产生二义性,算法的执行者或阅读者都能明确其含义及如何执行。
3.可行性:算法中的所有操作都可以通过将已经实现的基本操作运算执行有限次来实现。
4.输入一个算法有0个或多个输入。当用函数描述算法时,输入往往是通过形参表示的,在他们被调用时,从主调函数获得输入值。
5.输出一个算法有一个或多个输出,它们是算法进行信息加工后得到的结果,无输出的算法没有任何意义。当用函数描述算法时,输出多用返回值和引用类型表示。

4.2 评价算法优劣的基本标准

1.正确性:在合理的数据输入下,好的算法能够在有限的运行时间内得到正确的结果。
2.可读性:一个好的算法首先应便于人们理解和相互交流,其次才是机器可执行性。可读性强的算法有助于人们对算法的理解,而难懂的算法容易隐藏错误,且难于调试和修改。
3.健壮性:当输入的数据非法时,好的算法能适当的做出正确的反应或进行相应处理,而不会产生一些莫名其妙的输出结果.
4.高效性:包括时间和空间两个方面。时间高效是指算法设计合理,执行效率高,可以用时间复杂度来度量;空间效率是指占用存储容量合理,可以用空间复杂度来度量。时间复杂度和空间复杂度是衡量算法的两个重要指标

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值