zoukankan      html  css  js  c++  java
  • 我的软考之路(三)——数据结构与算法(1)之线性

             数据结构与算法是程序设计的两大基础。大型的IT企业面试时也会出数据结构和算法的题目。它能够说明你是否有良好的逻辑思维,假设你具备良好的逻辑思维。即使技术存在某些缺陷。面试公司也会觉得你非常有培养价值,至少在一段时间之后。技术能够非常快得到提高。同一时候,它也是软考的重点,我们须要对这部分的内容进行一下总结。

           这篇博文主要是通过图来解决抽象问题。

    不多说了,我们先看一下数据结构和算法的总体内容。

                                            

           数据结构和算法的内容并不多,我们先从数据结构開始,数据结构总结完之后。再学习算法,我们要小火慢炖,一口一口吃掉它。


    1、线性表

           概念:

                 数据元素的排列方式是线性。

          分类:

                 分类规则是依据上图中元素的存储结构来划分的。

                                                                                       

          (1)顺序表

              基本思想:元素的存储空间是连续的。在内存中是以顺序存储。内存划分的区域是连续的。

    存储结构例如以下图:

                               

              

          (2)链表

              基本思想:元素的存储空间是离散的,单独的(物理),它们能够通过在逻辑上指针的联系使得它成为了总体的链表。存储结构例如以下图:

                                    

         

                1.单链表

                       

                2.循环链表

                                    

                3.双链表(双向循环表)

                       

               

               三者的差别(从上面三个图我们能够总结出来):

           1、它们都有数据域(data(p))和指针域(next(p)),可是从图中能够看出双链表有两个指针域,一个指向它的前点,一个指向它的后点。

           2、单链表最后一个点的指针域为空。没有后继节点;循环链表和双链表最后一个点的指针域指向头点,下一个结点为头点,构成循环;

              3、单链表和循环链表仅仅可向一个方向遍历。双链表和循环链表,首节点和尾节点被连接在一起,可视为“无头无尾”;双链表能够向两个方向移动,灵活度更大。


          线性表操作:

             理解了顺序表和链表的基本思想之后,线性表的操作是简单,而且网上有非常多解说插入和删除结点的博客。在这里我就只是多的介绍了。


            顺序表和链表的对照:

                              


              栈和队列是特殊的线性表。既然特殊就有不同点。


    2、栈

          基本思想:后进先出(先进后出)即栈中元素被处理时。按后进先出的顺序进行。栈又叫后进先出表(LIFO)。

          举例:

          日常生活中有非常多栈的样例。比如,放在书桌上的一摞书,仅仅能从书顶上拿走一本书,书也仅仅能放在顶上。例如以下图所看到的:

                                                     


    3、队列

         基本思想:先进先出即先被接收的元素将先被处理,又叫先进先出表(FIFO)。例如以下图所看到的:

         举例:

         队列的样例。生活中很多其它。比方:买车票排队。排头最先买到车票,新来的排的队尾。进车站时,安检行李,先进去的最先出来,后进去的后出来。

                                                      

       

    分类:

    1.顺序队列

              例如以下图所看到的:

                              

          顺序队列的操作,要推断队满和队空的标志。从图中我们能够总结得到:

          1.队空:head = tail

          2.队满:tail = m

    2.循环队列

            例如以下图所看到的:

                                      

          循环队列的操作,要推断队空和队满的情况,从图中我们能够总结得到:

             1.队空:head = tail

          2.队满:tail + 1 = head(在队列中会留一个空着的空间。所以要加1)


    总结

               线性表真的非常easy。我反正是会了,你会了吗?

           

          兴许博客的更新列表。敬请期待。      

          我的软考之路(一)——开篇已更新

          我的软考之路(二)——J2SE宏观总结已更新

          我的软考之路(三)——数据结构与算法(1)之线性表已更新

          我的软考之路(四)——数据结构与算法(2)之树与二叉树已更新

          我的软考之路(五)——数据结构与算法(3)之图已更新

          我的软考之路(六)——数据结构与算法(4)之八大排序已更新

          我的软考之路(七)——数据结构与算法(5)之查找已更新


            

  • 相关阅读:
    xgboost保险赔偿预测
    XGBoost对波士顿房价进行预测
    XGBoost 重要参数(调参使用)
    xgboost与gdbt的不同和优化
    基于OpenCV制作道路车辆计数应用程序
    卷积神经网络cnn的实现
    记一次bond引起的网络故障
    虚拟化讲座
    ubuntu16安装dhcp server
    frp内网穿透新玩法--结合xshell隧道
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7072839.html
Copyright © 2011-2022 走看看