数据结构
Posted mrtanjuncai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构相关的知识,希望对你有一定的参考价值。
*************************第十一章 数据结构**************************
一.why 为什么要加数据结构这一章
1. 让非计算机专业的学生普及一下数据结构这门课的作用
2. 面试数据结构是重点
*************************基本概念**************************
一.数据
就是符号
特点:
1.输入到计算机
2.可以被计算机加工处理
数据: 输入到计算机并被计算机加工处理的符号的集合.
比如 电子商务网站中的:商品种类信息、商品信息
学生管理系统中的:学生信息、课程信息
数据结构中把数据分为: 数值类型 、非数值类型
数据类型的数据进行的是科学运算,非数值的数据,例如字符串进行非数值处理,
声音、图像、视频等可以通过某些编码手段转换成 字符 进行处理
二.数据元素
组成数据的基本单位...
具体的一个学生信息 是数据元素...
学生表
学号 姓名 年龄 性别
1 丁泽鹏 20 男
2 aaa 22 女
3 bbb 22 男
数据库中
每一行 叫做一条记录
每一列 叫一个字段
数据结构 面向对象编程中的 数据库
数据元素 对象 记录
三.数据项
组成数据元素的最基本的单位
像学号、姓名、年龄这些都是数据项
数据结构 面向对象编程中的 数据库
数据元素 对象 记录
数据项 属性 字段
四.数据对象
相同数据项的数据元素的集合....,数据对象是数据的一个子集
比如学生管理系统中,有学生数据、课程数据,其中学生数据是一个数据对象,课程数据又是一个数据对象
数据对象简称为数据
相同 属性 的 对象的集合
数据结构 面向对象编程中的 数据库
数据元素 对象 记录
数据项 属性 字段
数据对象 类 表
五.数据结构
结构: 关系.
分子结构: 组成分子的原子之间的关系...
数据结构: 组成数据的数据元素之间的关系
数据结构主要研究的是 数据元素 和 数据元素之间的关系. 分析清楚数据的特点,以及数据之间的关系
才能编写一个 "好"的程序!
************************按照数据结构的研究方向:逻辑结构和物理结构**************************
一.逻辑结构
1. 集合
集合中的元素没有任何关系,唯一的共同点是同处于一个集合,和数学中的集合概念相同
特点: 1. 唯一性 2. 无序性 3.确定性
{1,1,2,3} 不是集合
{1,2,3} {3,2,1} 是同一个集合
{个子比较高的同学的集合} 不是集合
2. 线性表
线性表中的每个元素 都有一个前驱节点和后继节点(除了第一个节点和最后一个节点以外)
3. 树
每个元素 都有一个前驱节点和多个后继节点(根节点、叶子节点除外)
4. 图
每个元素 都有多个前驱、多个后继..
示意图
1.逻辑结构中每个节点可以使用 圆圈 表示
2.节点之间的关系 可以使用连线表示, 如果节点之间的关系有方向性 可以用带有箭头的连线表示..
二.存储结构(也叫做物理结构)
存储结构研究的方向 是 如何把元素的逻辑结构 保存到计算机的存储器中(内存)...
把元素的逻辑结构 保存到外存中(例如硬盘、光盘)是文件结构研究的,文件结构属于操作系统
这门课的知识点..
1. 顺序存储
元素放到物理位置连续的内存空间中...
使用数组来实现顺序存储...
举例: 排队买火车票
元素的物理位置 决定了元素的逻辑顺序...
2. 链式存储
元素放到物理位置不一定连续的内存空间中
举例: 吃饭的时候 排队机
物理位置 并不能决定它的逻辑顺序...,位置可以连续也可以不连续
链式存储元素有两部分组成:(1)数据域 (2) 指针域
*************************线性表**************************
根据线性表的存储方式不同,把线性表又分为两种
一.顺序表
顺序表: 使用顺序存储方式实现的线性表 叫做顺序表
二.链表
链表: 使用链式存储方式 实现的线性表 叫做链表
*************************顺序表和链表的区别(面试题)***************
一.定义
顺序表: 使用顺序存储方式实现的线性表 叫做顺序表
链表: 使用链式存储方式 实现的线性表 叫做链表
二. 插入、删除运算
顺序表(数组)的插入和删除运算 比较慢,原因是要移动元素,移动完以后再插入新的元素
链表的插入和删除 比较快 因为只需要修改 元素的指针域即可 不需要移动元素的位置
三.查找
顺序表(数组): 查找快 ,可以通过数组的下标快速的定位
链表: 查找慢 ,需要先从头结点开始一个一个向后查找,所以比较慢
*************************实际工作中*****************************************
需求1: 在第三个元素后面插入一个新的元素 "aaa"
1. 先查找
顺序表(数组): 通过下标快速定位,由于数组中元素的物理位置是连续的,这样元素之间移动的时候
是相当快的,可以忽略不计...
链表: 通过头结点来找,找了半天找到了第三个元素 然后再插入
综合考虑 还是顺序表比较快
2. 插入运算
需求2: 频繁插入一个元素(插入到线性表的最后面)
还是顺序表比较快
以上是关于数据结构的主要内容,如果未能解决你的问题,请参考以下文章