`

数据结构--绪论(From:数据结构 C语言描述)

 
阅读更多

前言

“数据结构”是计算机程序设计的重要理论技术基础,是计算机学科的核心课程。“数据结构”是一门专业技术基础课。要求:学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及其相应的算法,并初步掌握算法的时间分析和空间分析技术。

 

“数据结构”的学习过程也是复杂程序设计的训练过程,数据结构主要是培养数据抽象能力。

1章 绪论

为了编写出一个“好”的应用程序,必须分析待处理的对象的特性以及各处理对象之间存在的关系。

1-1 什么是数据结构

具体问题 -> 数学模型 -> 算法(解此数学模型 -> 编写程序 -> 测试、调整 -> 最终解答

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

1-2基本概念和术语

数据:对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素:数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。有时,数据元素可由若干个数据项组成,数据项是数据的不可分割的最小单位。

例如:书的书目信息为一个数据元素,而书目信息中的每一项(如书名、作者名等)为一个数据项。

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

例如:整数数据对象是集合 N = {0, +/-1, +/-2…}

数据结构:相互之间存在一种或多种特定关系的数据元素的集合。数据元素之间存在着某种关系,这种数据元素相互之间的关系成为结构。通常有下列4类基本结构:

1集合 结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他关系。

2线性结构 结构中数据元素之间存在一对一的关系

3树形结构 结构中的数据元素之间存在一对多的关系

4图状结构或网状结构 结构中的数据元素之间存在多对多关系

 

数据结构的形式定义为:数据结构是一个二元组

    Data_Structure = (D, S)

其中:D是数据元素的有限集,SD上关系的有限集。

 

结构定义中的“关系”描述的是数据元素之间的逻辑关系,因此又称为逻辑关系。数据结构在计算机中的表示成为数据的物理结构,又称存储结构。在计算机中表示信息的最小单位是,用一个由若干位组成起来的一个位串表示为一个数据元素,通常称这个位串为元素(Element)或节点(Node)。当数据元素由若干数据项组成时,位串中对应于各个数据项的子位串成为数据域(Data Field)。

 

数据元素之间的关系在计算机中有两种不同的表示方法:顺序映像非顺序映像。并因此得到两种不同的存储结构:顺序存储结构链式存储结构任何一个算法的设计取决于选定的数据逻辑结构,而算法的实现依赖于采用的存储结构。

 

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

抽象数据类型(ADT是指一个数学模型以及定义在该模型上的一组操作。一个含ADT的软件模块通常应包含定义、表示和实现3部分。ADT定义由一个值域和定义在值域上的一组操作完成。若按其值的不同特性,分为3种:

1)原子类型:原子类型的值是不可分解的。一般情况下,已有的固有数据类型足以满足需求。但有时也需要定义新的原子数据类型,例如:数位为100的整数。

2)固定聚合类型:属该类型的变量,其值由确定数目的成分按某种结构组成。

3)可变聚合类型:和固定聚合类型比较,构成可变聚合类型“值”的成分的数目不确定

后两种成为结构类型,ADT可用以下三元组表示:

D,S,P

其中,D是数据对象,SD上的关系集,P是对D的基本操作集。参考:

ADT 抽象数据类型名 {

    数据对象:<数据对象的定义>

    数据关系:<数据关系的定义>

    基本操作:<基本操作的定义>

} ADT 抽象数据类型名

基本操作名(参数表)

    初始条件:<初始条件描述>

    操作结构:<操作结果描述>

1-3 算法和算法分析

1-3-1算法

算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。一个算法有下列5个重要特性:

1)有穷性

2)确定性

3)可行性

4)输入

5)输出

1-3-2算法设计的要求

1)正确性

2)可读性

3)健壮性

4)效率与低存储量要求

1-3-3算法效率的度量

1)事后统计的方法:计时。缺点:一是必须先运行依据算法编写的程序,二是所得时间的统计量依赖于计算机的硬件、软件等环境因素。人们常常采用事前分析估算的方法。

2)事前分析估算的方法:

    1依据的算法选用何种策略;

    2问题的规模;

    3书写程序的语言,对于同一个算法,实现语言级别越高,执行效率越低;

    4编译程序锁产生的机器代码的质量;

    5机器执行指令的速度。

为了便于比较同一问题的不同算法,通常做法是,从算法中选取一种对于所研究的问题(算法类型)来说是基本操作的原操作以该基本操作重复执行的次数作为算法的时间复杂度。

 

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间量度记作:

Tn = O(f(n))

它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度

O1)、O(n)On2分别称为常量阶、线性阶、平方阶。算法还可能呈现的时间复杂度有对数阶Ologn、指数阶O(2n)等。

时间复杂度均指最坏情况下的时间复杂度。

 

分享到:
评论

相关推荐

    数据结构-c语言版-.严蔚敏_吴伟民.自己整理-带目录的

    根据提供的标题、描述和标签,可以推断出这是一份关于《数据结构-C语言版》这本书的目录,该书由严蔚敏与吴伟民共同编写。这份文档可能包含了整个书籍的大纲,对于理解该书内容及组织结构具有重要的参考价值。下面将...

    南邮《数据结构-C语言描述》陈慧南主编答案

    数据结构-C语言描述知识点总结 第一章 绪论 1.1 划线语句的执行次数和渐近时间复杂度 * 问题1:`i=1; k=0; do { k=k+10*i; i++; } while(i&lt;=n-1)`,计算划线语句的执行次数和渐近时间复杂度。 * 答案:执行次数为...

    C语言 第一章绪论

    - **课程名称**:C语言程序设计基础 - **课程目标**:通过本课程的学习,学生将能够掌握C语言的基础知识及其应用,具备一定的编程能力。 - **重点培养能力**: - 理解计算机的基本原理及C语言的特性。 - 掌握C语言...

    《数据结构--C语言描述-》-第二版全套电子课件完整版ppt整本书电子讲义最全教学教程整套课件.ppt

    4. C语言描述:C语言是一种底层且高效的编程语言,适合描述数据结构和算法。通过C语言,可以更好地理解和实现数据结构的底层细节,提高程序的运行效率。 5. 教学要求:学习数据结构需要了解学科发展历史、掌握相关...

    考研数据结构-学习笔记

    ### 数据结构概述与基础知识 #### 一、绪论 数据结构是计算机科学中一个非常重要的概念,它涉及如何组织和管理数据,以便高效地执行各种操作。本节将重点介绍数据结构的基础概念、逻辑结构与存储结构之间的关系,...

    数据结构(c语言版)-包括:绪论、线性表、栈和队列、串、数组、树、图、查找、排序、文件

    c语言---数据结构(c语言版)----包括:绪论、线性表、栈和队列、串、数组、树、图、查找、排序、文件。

    (完整word版)《数据结构-C语言描述》习题及答案-耿国华.doc

    "《数据结构-C语言描述》习题及答案" 本资源是关于数据结构-C语言描述的习题及答案,涵盖了数据结构的基本概念、算法设计、时间复杂度分析、面向对象程序设计语言的特点等方面。该资源共有四部分:第一部分是绪论,...

    南大C语言数据结构--通俗易懂版

    《南大C语言数据结构--通俗易懂版》是一份专为C语言初学者设计的教育资源,由南京大学提供,涵盖了数据结构的基础知识。这份资料深入浅出地讲解了C语言编程中的数据组织和管理,使得学习过程更为直观和易懂。 首先...

    简要数据结构讲义--配合严蔚敏c版数据结构使用

    ### 数据结构核心知识点详解 #### 一、绪论 ##### 1. 数据结构与抽象数据类型 - **数据结构**:研究数据元素之间的逻辑关系和物理存储方式。 - **抽象数据类型(ADT)**:对数据类型的一个抽象描述,包括数据对象、...

    清华大学 数据结构C语言版 教学大纲

    ### 数据结构C语言版教学大纲知识点总结 #### 一、课程基本信息 - **课程名称**:数据结构B - **课程代码**:未提供 - **学时数**:48学时(其中讲课38学时,实验10学时) - **学分数**:3学分 - **课程类别**:...

    数据结构(C语言)PPt教程

    本教程以C语言为实现工具,深入浅出地讲解了数据结构的各种概念和算法。以下将按照压缩包中的文件章节顺序,逐一解析相关知识点。 1. **第1章 绪论** - 数据结构的基本概念:数据、数据元素、数据对象、数据结构、...

    数据结构(C语言版)严蔚敏

    ### 数据结构(C语言版)严蔚敏 #### 知识点概述 《数据结构(C语言版)》是严蔚敏教授编写的一本经典教材,该书主要介绍了计算机科学中的核心概念——数据结构,并使用C语言作为实现工具。本书不仅适合计算机专业...

Global site tag (gtag.js) - Google Analytics