首页 > 代码库 > 【自考】数据结构导论《逻辑结构AND物理结构》

【自考】数据结构导论《逻辑结构AND物理结构》


碎碎念:


      时间过的SO快、一眨眼又自考了、都说数据结构挺难的、但是跟人感觉比数据库系统原理好搞吧- -、那卷子看了直接晕啊、还是数据结构好、没啥要记的、画画图、满好搞的、算法嘛……看懂一次下次再看又忘了、果然没好好总结啊!


思维导图


逻辑结构

逻辑上元素与元素之间的关系、有线性表、栈、队列、数组、树、二叉树、图等。(线性非线性)


物理结构

实现逻辑结构、数据在计算机存储器的储存方式、有顺序存储结构和链式存储结构两种。


时间-空间复杂度

     针对算法、说的是时间效率和空间效率、就是你这个算法、花多长时间、多少空间、这是一个相对的概念。

时间

      假设算法中循环次数N为无限大、有一个循环时间复杂度就是O(n)、两个循环就是O(n2)、没有循环复杂度为O(1).其他可无视、因为都是绝对时间、相比N太小。

例子:

<span style="font-size:18px;">for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j)
{
c[i][j]=0;//该步骤属于基本操作执行次数:n的平方次
for(k=1;k<=n;++k)
c[i][j]+=a[i][k]*b[k][j];//该步骤属于基本操作执行次数:n的三次方次
}
}</span>

上面的时间复杂度就是O(n3)

空间

这个就是看数组的维数、在这里数组维数都是可变的N维、当N无限大、一维数组空间复杂度O(n)、二维数组O(n2)、无数组O(1).其他变量常量无视、相对与无限大的数组、固定空间不计。



 

物理结构(存储结构)


     顺序存储 

 一个挨着一个、永不分离。

            特点:物理空间连续


    

    链式存储

  虽然天各一方、但紧紧联系在一起。

          特点:物理空间不一定连续、元祖之间靠指针连着。





逻辑结构


《线性》

特点:一条路径


特点:先进后出


关键字:TOP、进栈-溢出-栈顶、出栈-下溢-栈低、


     栈是特别简单的逻辑结构、就像装羽毛球的桶、一个个往里面放羽毛球、最先放进去的要最后才能拿出来、这就是栈的特性、TOP是指栈顶元素。


     进栈就好似放入一个羽毛球、因为加了一个、TOP+1、放满了再放就放不进去了、栈储存量有限、如果满了还放就会溢出。


      出栈就把羽毛球拿出来、每次TOP-1、当TOP=0也就是没有元素的时候、再取元素就会产生下溢。




队列


         


特点:先进先出


关键字:入队列、出队列、首指针、尾指针、假溢出


      队列就像下蛋笔、每次从后面放入(入队列)、从前面拱出(出队列)、尾指针(rear)、头指针(front)、队列进出如图


顺序结构


当rear和front都指在最顶就会假溢出


解决办法:循环队列、尾指针到头就会继续从头循环



特点:甜甜圈、有一个空间留着(判定满了没)


评语:贪吃蛇、转圈来、绝对咬不到尾巴呦!


关键运算:取余


《数组》

二维数组--矩阵压缩

目的:节省空间

方法:多个想通值分配一个存储空间、0值不分配空间。


《非线性》


        树

特点:跟现实中树一样、能分叉、分多个叉

关键字:空树、节点、节点的读、叶子、树的度、树的高度、有序树、无序树、

遍历:先序、后序、层次


          二叉树


特点:

     继承了树的传统、但是特别之处在于他每一个叉只能分两个叉、弹弓之树!为弹弓而生。。。


如图



常见问题:

1、给层数求最多节点数(满二叉树)

      i=层数 最多节点数2i-1个节点

2、给深度、求节点数(满二叉树)

        k=深度 2k-1

3、叶子节点总比非叶子节点多1个呦!


遍历

先序、中序、后序。


问题:有其中两个求第三个


遍历图


注意:先序、中序、后序遍历每次都是以根节点按顺序开始、类似递归。


层次遍历:从第一层依次遍历、没啥说的。


树存储结构(链)

孩子链表

孩子兄弟链表

双亲表示法


森林、树、二叉树转换

树—>二叉树

兄弟齐心、变成二叉树= =

注:森林就是好多树

森林—>二叉树

二叉树—>森林


        哈夫曼树



     每次合并最小的两个值成为一棵二叉树、合并的值放入数列继续合并、直到最后合并成一棵二叉树。为什么要这样?有什么意义

      其实就是为了检索、比较的值其实是他们的出现频率、你会发现、出现频率越小的、越在下面、找到他要多几条‘线’,值大的在上面、也就是使用频率高的、在上面更容易找到、用哈弗曼编码的结果就是、常用的很快能找到、不常用的也能找到、就是慢一点、比如家里的筷子天天用、就放在外面、蜡烛只有在停电的时候用、就放在柜子里面、性质差不多。


哈弗曼编码



哈弗曼树的基础上、根链接左子树和右子树边写上01、这样找到任何一个节点都能写成编码、

 

 

 

《图》


特点:

      多个圆圈可以随意相连、有的带箭头有的不带、带箭头的有的会弯曲、有箭头的只能向箭头的方向走。


关键字:

       顶点(圆圈)、边(连的线)、权(线上的数)、有向图无向图(有箭头、没箭头)、度(连圆圈有几条线)、路径长度(顶点V1到顶点V2经过边的数目)


图的表示:

G=V,E注:V是顶点的集合、E是线段的集合

V={V0,V1,V2,V3}

E={(V0,V1),(V1V2),V1V2),(V2,V3)}注:()括起来两个顶点的是-无向图

E={<V0,V1>,<V1,V2>,<V2,V3>,<V3,V4>,<V3,V1>,<V4,V0>,}注:<>括起来两个顶点的是-有向图

出度、入度、顶点的度、

出度:出去的线

ID(V1)=1

就是顶点V1的出度为1

入度:进来的线

OD(V1)=2

就是顶点V1的入度为2

:顶点出来进去所有线之和=入度+出度

D(V1)=ID(V1)+OD(V1)=3


总结:

今天主要总结了逻辑结构和物理结构、物理是用实现逻辑结构的、逻辑结构则是一种思想、就像三层、就像设计模式、一开始都说数据结构挺难的、但是我看图比较多、我还是比较乐呵的、毕竟最恐怖的是那整篇密密麻麻的…………文字 = =、
最近也做了两套题、不知怎么的效率就是上不去额、还有2星期就要考试了、加油吧!


————————————————今天就到这吧、回来搞搞算法——————————————————

—————————chenchen———————————


【自考】数据结构导论《逻辑结构AND物理结构》