发表于: 2017-12-13 21:22:04

1 610


一.今天完成的主要事情

1.对所负责的模块进行进一步的完善

主要对数据表和接口文档以及方案设计中的内容进行一些细节上的修改,不再赘述

2.根据老大的提示,学习了付老师的课程

以下是所做的笔记

线性表,队列.栈
1.数据结构的基本概念
(1).数据结构的基本概念
个人理解:数据结构就是数据元素和数据元素之间的关系,数据就是任何可以存储在计算机中的东西,数据元素则是指对于要解决的问题来说最小的不可分割的数据粒度,比如我要抽象一个班级,那么这个班级中的每个学生就是不可再分割的数据元素,而学生和学生之间的关系就组成了数据结构.而不可再分割也是相对的概念,比如班级这个问题,每个学生的信息就是不可再分割的数据元素,而对于一个学生来讲,他的更具体的信息才是不可分割的数据元素.
逻辑结构就是现实问题中数据和数据之间的结构关系,而物理结构就是用计算机的存储方式将现实中的问题抽象出来的数据和数据之间的关系存储在计算机中.
(2)数据的逻辑结构指数据之间的相互关系

集合:结构中的数据元素除了同属于一种类型外,别无其他关系

线性结构:结构中的元素存在一对一的关系

树状结构:结构中元素存在一对多的关系

图状结构:结构中的元素时多对多的关系

数据结构举例:
集合:散落在戈壁滩上的石头,都是石头,但相互之间并没有其他关系,属于最松散的逻辑关系
线性结构:军队走队列中的一列,士兵和其他的士兵都是一一对应的关系(1:1)
树形结构:家族图谱,最根上的是祖先,从祖先繁衍出各种结构,也可以类比为象棋中的一个个组块
图状结构:地图中A点到B点之间有几条路线,多对多关系
(3).数据在计算机中的表示称为物理结构

顺序存储:逻辑上相邻的元素存储在相邻的数据单元中,用存储位置来表示逻辑关系

链式存储:逻辑上相邻的元素在存储器中不一定相邻,用附加地址表示数据元素之间的逻辑关系

索引存储:结构在存储节点信息的同时,还简历附加的索引表,存取数据时,必须依赖索引

散列存储:根据节点的值确定节点的存储位置,通过某个函数(散列函数)计算其存储地址,只存储节点的数值而不存储节点间的关系

举例:顺序存储是数组,链式存储是链表,索引存储类比为字典中的目录存储,散列存储则是数组和链表/树组合起来进行存储,比如哈希表.
(4)数据的运算
个人理解:这个运算不是指数学上的加减乘除,而是指对数据的操作,比如增删改查,遍历,排序等操作,在计算机中需要抽象成该语言的数据类型实现

总结成一张图(重点):

2.线性表的基本概念
具体定义比较复杂,还有一堆的数学公式,总的意思就是除第一个元素之外,其他的每个元素有且只有一个直接前驱,除最后一个元素外,其他的每个元素有且只有一个直接后继
例如,数组,除了第一个元素和最后一个元素以外,其他所有元素的前后都只有一个相邻的元素,这个元素是一个抽象的概念,可以是一个数字,也可以是一个字母,还可以是一个对象,一条记录,一个人的信息等等,只要是这些元素和元素是相同类型的就可以.
线性表的基本运算
包括初始化,保存,输出,插入,删除
数据结构的运算不同于数学上的加减乘除运算,其实是对这个数据结构中常用的操作的一个总称

3.线性表的物理存储

线性表在逻辑上是一个接一个,但是在物理存储上有两种实现方式,顺序存储,典型的就是数组,以及链式存储,典型的是链表

      线性表可以用顺序存储和链式存储,顺序存储是将数据一个接一个连续存储,优点是随机读取速度快(直接用下标直接找到),实现简单,和索引/链表相比节省存储空间.但缺点是插入删除运算效率低,最大长度提前固定,不利于扩充,
      链式存储是在上一个节点中存储下一个节点地址的指针,这样优点是提高内存利用率,插入删除运算效率高,不需要提前确定最大长度;但是缺点是查找元素时只能顺序查找,不能随机查找,查找效率低下,实现较为复杂
4.队列和栈
栈是限制仅能够在一端进行插入和删除操作的线性表,其特点是后进先出(LIFO),相当于有底的箱子

栈通常用于函数的调用,进制转换,走迷宫等


队列是只能在一端进行插入,而在另一端进行删除操作的线性表,其特点是先进先出(FIFO),相当于没底的箱子,先进去的东西先漏出来

顺序队列存在的问题:
      "假溢出"问题:当队列为顺序队列时,一边在不停的向队列中存储元素,一边在不停的向队列中取出数据,最终会导致队列中明明还有很多的空间可以使用,但是却无法继续插入元素的情况,因为此时队尾指针已经到达内存的边界,这就是顺序队列的"假溢出"问题.
       该问题可以用循环队列来解决
循环队列:做法就是把队列的队头和队尾想象的链接在一起,实际操作中用求余运算实现,实际在内存中是没有循环存储这一说的,但是通过逻辑上的运算想象成一个循环队列.

简单来说,当front==rear时,队列为空,当(rear+1)%LENGTH==front时队列满


二.明天计划完成的主要事情

1.参加方案评审,争取一次性通过方案评审

2.继续学习付老师的计算机基础课程


三.遇到的问题

暂无


四.收获

以上


五,项目进度情况

暂无延期风险



返回列表 返回列表
评论

    分享到