datastruct

1.1数据结构

 

程序=数据结构+算法

数据 (Data): 信息的载体,是能够输入到计算机中被计算机识别、处理、存储的符号总称。

数据元素 (Data Element): 数据的基本单位,又称为记录。一般数据元素由若干基本项组成。

数据类型(Data Type):数据元素取值范围与运算的限定。

小结:

数据不再是单纯的数值,而是一个集合:

数据不再是包括整型,浮点类型的数值类型

包括字符,图像、声音等非数值类型的问题

数据是一个集合,是多个数据元素组成,每个数据元素又是多个数据项组成

数据结构主要研究:数据的逻辑结构、存储结构及其操作

1.2存储方式

(1)顺序存储

按照数据元素的逻辑关系在计算机内存中连续存储,内存中开辟连续空间问题

(2)链式存储

数据元素之间的关系通过地址和指针的方式建立,在内存中是不连续的

(3)索引存储(Indexed storage):

通过索引表,地址区链接数据文件,增加查询效率

 

(4)哈希存储:

通过构建数据元素里面的某个数据项作为key。和存储地址之间建立一个映射关系,通过key能快速找到数据元素。

小结:

顺序存储………………线性表、顺序表(数据元素在内存中连续存储,联系且大小固定)

链式存储结构……………..链表(不连续的内存空间,内存大小固定)

索引存储结构…………….索引表,数据文件

散列存储结构……………..hash表,通过关键字段和地址构建映射关系

1.3 操作

具有逻辑结构的数据元素按照某种存储结构进行存放,计算机能够识别,并进行简单的操作,不是简单的+-*/

1、创建

2、插入

3、删除

4、查找

5、销毁

6、遍历

1.4 顺序表(1对1,顺序存储)

逻辑结构:1对1的线性结构,元素除了首尾,其他元素只有一个前驱和一个后继

存储结构:顺序存储,内存中连续且固定

特点:

顺序并且连续的存储

大小固定,表满不能进行插入,表空不能删除

操作:插入和删除不是很方便,查找方便

1.5定义顺序表

通讯录: 数据元素 联系人 数据项(姓名、电话、家庭住址、公司职称)

超市管理系统:数据元素 商品 数据项(商品名称,生产日期,库存量,上架时间,本月销量)

数据类型:int float char 指针类型 结构体 共用体 枚举

typedef struct goods

{
   char name[20];//商品名称

   int sale;//销量

   char datatime[10];//生产日期

   int num;//库存量

}data_type;

typedef struct list

{

   data_type arr[N];//N连续空间大小,顺序且连续

   int count;//有序数据个数 count == 0 空 count ==N 满

}List

1.1 链表:

带头节点的单项链表:

1、有没有头节点

2、指针域是单项还是双向

单向链表、双向链表

3、尾节点是否指向头节点

循环链表 不循环链表

 

 

链表:头删尾插

枚举的大小为:4 从0开始依次增加 : enum op性的

满二叉树:所有中间节点的子节点皆为2

i层节点的个数:2^(i-1)

总共k层:总节点的个数2^k-1

假设子度为0的节点个数n0,子节点数0

假设子度为1的节点个数n1,子节点数n1

假设子度为2的节点个数n2,子节点数2*n2

总节点数=根节点+子节点

n0+n1+n2 = 1+0+n1+n2*2

n0=1+n2

完全二叉树:和满二叉数拥有一样的编号,但是可以从后往前少

空间浪费

二插树:

 

 

 

 

 

最优二叉树(赫夫曼树):

带权路径最短。

树中所有叶子的带权路径长度: WPL最小=叶子节点×边数

一个的同学成绩,正态分布。60分以下的是少数人,60-70,80-90 。 每个执行次数是不同的; 放到二叉树结构去实现。 选一种二叉树的结构最优,让代码的执行效率最高就行;

赫夫曼编码:

 

 

赫夫曼树

算法:

解决问题的步骤:有穷的规则的有序集合

程序=算法+数据结构

特性:

有穷性、确定性、可行性、输入、输出

IPO:

I input输入

P process处理:增删改查

O output输出

 

查找:顺序查找、分块查找、分块查找

分块查找:

索引表:

Kmax该块中的最大值

序号:起始位置     

Hash表的查找:

让查找与数据规模无关,查询时间常数级别

直接地址法:H=a*K+b

保留除数法:H=key%p

 

开放地址法:冲突了+1

质数取余的方法进行映射,依据key找到地址

如果地址相同:采用开发地址法,线性探查法,二次探查找到解决冲突

Hash:链地址法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值