数据结构笔记--第一章

1.1什么是数据结构

1.1.1数据结构的定义

数据是描述客观事物的数和字符的集合。

数据项是具有独立含义的数据最小单位。

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

数据结构是指所有数据元素以及数据元素之间的关系,可以看作是相互之间存在着某种特定关系的数据元素的集合。

数据结构通常包含:数据的逻辑结构,数据的存储结构,数据的运算。

1.1.2数据的逻辑结构

数据的逻辑结构是从数据元素的逻辑关系上描述数据的,是指数据元素之间的逻辑关系的整体,通常从求解问题中提炼出来,数据逻辑结构与数据的存储无关,独立于计算机的。

逻辑结构的类型主要为:集合、线性结构(一对一)、树形结构(一对多)和图形结构(多对多)

1.1.3数据的存储结构

定义:数据逻辑结构在计算存储器中的存储表示称为数据的存储结构,也就是逻辑结构在计算机中的存储实现。通常要求要存储逻辑结构中的每一个数据元素,也要存储数据元素之间的逻辑关系。

顺序存储结构

①采用一组连续的存储单元存放所有的数据元素。

②两个逻辑上相邻的元素在存储器中的存储位置也相邻。

③优点:存储效率高,分配的存储单元全用于存储数据元素,元素直接的逻辑关系不占用额外的存储空间。可对元素实现随机存储,每个元素对应一个逻辑序号,通过序号可直接计算对应元素的存储地址,从而获取元素值。

④缺点:不便于数据修改,对元素插入和删除要移动一系列元素

链式存储结构

①每个逻辑元素使用一个内存结点存储,每个结点单独分配,所有的结点地址不一定是连续的,无需占用一整块存储空间,

②每个结点附加指针域,用于存放相邻结点的存储地址,即通过指针域将所有结点链接起来。

③优点:便于数据修改,对元素的插入和删除仅需修改相应结点的指针域。

④缺点:存储空间的利用率较低,不能对元素进行随机存取。

索引存储结构

在存储数据元素信息的同时还建立附加的索引表。每个数据元素都有关键字和对应的存储地址。

优点:查找效率高

缺点:需要建立索引表,增加空间开销

哈希存储结构

根据元素的关键字通过哈希函数直接计算出一个值,并将这个值作为该元素的存储地址。哈希存储只存储元素的数据,不存储元素之间的逻辑关系。

优点:查找速度快

1.1.4数据运算

对数据实施的操作,基本为增删改查、更新、排序等

1.1.5数据类型和抽象数据类型

数据类型:是一组性质相同的值的集合和定义在此集合上的一组操作的总称。是某种程序设计语言中已实现的数据结构。

C语言的指针类型:

int i,*p;

//i是整型变量,p是指针变量(它用于存放某个整型变量的地址)

int i,*p=&i;

//&i表示变量i的地址,p=&i表示将p指向整型变量i的运算,表达式*p是取p所指变量的值

printf("%d\n,*p");//此时*p输出变量的值2

C语言结构体类型:

struct Teacher  //教师结构体类型
{  int no;  //编号
   char name[8];//姓名
   int age;//年龄
};

存储空间的分配:静态存储空间基本上使用数组,动态存储空间使用malloc函数进行分配

抽象数据类型=逻辑结构+运算

抽象数据类型(ADT):指用户进行软件系统设计时从问题的数学模型中抽象出来的逻辑数据结构和逻辑数据结构上的运算,而不考虑计算机的具体存储结构和运算的具体实现算法。

1.2算法及其描述

1.2.1算法

定义:对特定问题求解步骤的一种描述,它是指令的有限序列。

特性:有穷性,确定下,可行性,有输入,有输出。

1.2.2算法设计的目标

正确性、可使用性、可读性、健壮性、高效率和低存储要求

1.2.3算法描述

伪代码、流程图、计算机语言等

1.3算法分析

定义:算法分析就是分析算法占用计算机资源的多少,主要是时间复杂度和空间复杂度。

1.3.1时间复杂度T(n)

定义:时间复杂度表示随问题规模n的增大,算法执行时间的增长率和f_(n_)增长率相同。使用T(n)的数量级来表示,通常只关注时间复杂度的最高阶,根据以下公式进行取舍:

O(1)<O({log_2}^n)<O(n)<O(n{log_2}^n)<O(n^2)<O(n^3)<O(n^k)<O(2^n)<O(n!)<O(n^n)

https://blog.csdn.net/f553762019/article/details/107939161

1.3.2空间复杂度

定义:对一个算法在运行过程中临时占用的存储空间大小的量度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值