数据结构01(引言)_代码已上传至GitHub

数据结构第一天

一、什么是数据结构

  1. 数据结构的起源

    1968年, 美国高德纳教授,《计算机程序设计艺术》第一卷《基本算法》,开创了数据结构和算法的先河,

    数据结构是研究数据之间的关系和操作的学科,而非计算方法,美国沃斯提出的 “数据结构+算法=程序”,揭示了程序的本质

  2. 数据结构相关概念

    什么是数据:

    所有能够输入到计算机中能够被程序处理的描述客观事实的符号

    数据项:有独立含义的数据的最小单位,也称为域

    数据元素:组成数据的有一定含义的基本单位,也叫做结点,节点,记录

    数据结构:相互之间存在一种或者多种特定关系的数据元素的集合

    算法(algorithm):数据结构中所具备的功能,能够解决某种特定问题的方法

  3. 数据结构的三个方面

    1. 数据的逻辑关系
    2. 数据的存储关系
    3. 数据结构的运算

二、数据结构的逻辑和存储关系

逻辑关系

​ 根据逻辑关系可以分为:集合,线性结构,树形结构,图形结构

集合:数据元素同属于同一个集体,但元素之间没有任何关系

线性结构:数据结构之间存在一对一的关系

树形结构:数据之间存在一对多关系

图形结构:数据之间存在多对多的关系


存储(物理关系)
​ 根据存储关系可以分为顺序结构和链式结构

顺序结构:数据元素存储在连续的内存中,用数据元素的相对位置来表示关系

​ 优点:支持随即访问,访问查找效率极高,适合用于查找数据频繁的结构。

​ 缺点:对插入和删除时效率低,操作不方便,内存的空间利用率低,要求高


链式结构:数据元素存储在彼此相互独立的内存空间中,每个独立的元素也叫做节点,每个节点中增加一项数据项用于存储其他相关节点的地址,以此表示节点之间的关系

​ 优点:空间利用率极高,对内存的要求不高,插入,删除更方便

​ 缺点:不支持随机访问,只能从头到尾逐个访问

具体采用哪种结构需要根据实现难度,空间时间要求,操作习惯等方面综合考虑选择合适的结构

三、数据结构的运算

通常,一般的数据结构都可能包含以下的运算,有些结构不会有相关的运算。

  1. 创建数据结构 create
  2. 销毁数据结构 destroy
  3. 清空数据结构 clear
  4. 数据结构排序 sort
  5. 插入元素 insert
  6. 删除元素 delete
  7. 修改元素 modify
  8. 查询元素 query
  9. 访问元素 access
  10. 遍历元素结构 show / ergodic / print

四、顺序表和链式表实现

顺序表

​ 顺序表的数据项如下:表的容量,数据元素的连续内存的首地址,当前元素的数量;顺序表的运算有:创建,销毁,清空,插入,删除,访问,查询,修改,排序,遍历等等。

在编写相关功能函数时,需要注意:1. 要保持数据元素的连续性 2.不要越界

链式表(list):

​ 元素(节点)的数据项如下:1、数据域:可以是任意类型的若干数据项。2、指针域:指向下一个节点

​ 由若干个节点通过指针域链接到一起就成了链表

不带头结点的单链表

​ 第一个节点的数据域存储的是有效数据,

​ 缺点:添加删除节点时,可能会修改第一个节点的指针,参数需要使用二级指针才能够达到更改指针指向的目的,比较麻烦。

带头结点的单链表

​ 第一个节点的数据域不存储有效元素,仅仅只是使用它的指针域永远指向链表的第一个数据有效的节点

​ 优点:添加,添加时会比不带头节点的链表更方便

​ 注意:其他操作要从头节点的下一个节点开始

今天算是c语言的结束,数据结构的开端了,接下来我会将各个数据结构都进行代码实现并附上源码,敬请期待……

所有数据结构代码:点击跳转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值