数据结构基础

1.什么是数据结构

数据结构:用来组织和存储数据

程序设计 = 数据结构  + 算法;

2.数据与数据之间的关系 

 (1)逻辑结构(数据元素与元素之间的关系)

集合:元素与元素之间是一种平等的集合关系;

线性结构:数据元素与元素之间存在一对一的关系(一一对应);

树形结构:元素与元素之间存在一对多的关系(重点:二叉树);

图形结构:元素与元素之间存在多对多的关系(网状结构,如下图);

补充:在内存中一般以线性存储,即为线性存储结构;

(2)物理结构(数据元素在计算机内存中的存储方式) 

顺序存储:在内存中选用一段连续的内存空间进行存储(例如数组);

                   1.数据查找方便,查找效率高于链式存储(O(1));

                    2.插入与删除数据时需要移动大量数据;

                    3.使用时需要预内存分配(例如数组需要提前确定元素个数与长度,避免越界访问);

链式存储:可以在内存中选用一段非连续的内存空间进行存储;

                    1.数据访问时必须从头遍历(O(n));

                     2.插入和删除元素方便;

                     3.不需要预内存分配,是一种动态存储的方式;

索引结构:将要存储的数据的关键字和存储位置之间构建一个索引表;

散列结构(哈希结构):将数据存储位置与数据元素之间的关键字建立起联系,利用元素的关键字去查找;

                      

 

补:

内存碎片:

内内存碎片:(例如结构体存储时,为了对齐内存而浪费的空间)操作系统中一些较小空间被占用,无法继续分配;

外内存碎片:定义数组时(申请较大空间),各个空间之间的内存间隙,无法被再次利用;

3.单向链表 

由结点和链表属性组成

结点:数据域:存放数据;          

          指针域:存放指针;

data
pnexd
链表属性:phead:保存第一个结点的地址,clen保存结点的个数;
phead
clen

 链表行为:

1.创建链表对象;

2.插入、删除、查找、修改数据;

3.销毁链表;注意,当释放空间后一定要让其指针=NULL避免野指针:

插入链表:

1.申请结点;

2.节点初始化;

3.插入节点;

4.链表元素加1;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值