数据结构

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: 频繁插入一个元素(插入到线性表的最后面)


还是顺序表比较快

 























































以上是关于数据结构的主要内容,如果未能解决你的问题,请参考以下文章

在数据结构中数据、数据元素、数据对象、数据结构、存储结构、数据类型以及抽象数据类型的定义分别是啥

数据结构与数据类型有啥区别?

数据结构都有哪些

数据结构和数据类型的区别

数据结构哪些是四种常见的逻辑结构

数据结构基本概念