• 数据结构


    1.  数据结构分为几类,请介绍下

    分为二类,线性结构,非线性结构

    线性结构:

    1)线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系

    2)线性结构有两种不同的存储结构,即顺序存储结构(数组)和链式存储结构(链表)。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的

    3)链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息

    4)线性结构常见的有:数组、队列、链表和栈

    非线性结构:

    非线性结构包括:二维数组,多维数组,广义表,树结构,图结构

    2.  稀疏数组

    介绍:

    当数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组保存该数组

    处理方法:

    1. 记录数组一共有几行几列,有多少个不同的值

    2. 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模

    应用实例:

    1. 保留类似二维数组(棋盘,地图)

    2. 把稀疏数组存盘,并且可以重新恢复原来的二维数组

    思路:

     

     

    二维数组转稀疏数组

    1. 遍历原始的二维数组,得到有效数据的个数 sum

    2. 根据sum创建稀疏数组sparsearr int[sum+1][3]

    3. 将二维数组的有效数据存入到稀疏数组中

    稀疏数组转二维数组

    1. 先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组

    2. 读取稀疏数组的后几行数据,并赋给原始的二维数组

    3.  队列

    介绍:

    队列是一个有序列表,可以用数组或链表来实现

    遵循先入先出的原则。

    循环队列定义:

    把队列的这种头尾相接的顺序存储结构称为循环队列。

    数组实现队列:

    图例说明:

    初始ManxSize为5,front=rear时队列为空,添加a1-a4数据,front为0不变,rear向后移

     

    a1.a2出队列时front向后移,rear指针不变

     

    添加数据a5a6,rear向后移 

     

    但是在添加a7时,rear和front指针重叠表示队列为空,为解决方法当队列满时,数组应该还有一个空闲单元让rear指针应指向预留空闲单元

     

    由于rear可能比front大,也可能比front小,所以尽管它们只相差一个位置时就是满的情况,但也可能是相差整整一圈。所有队列最大值为maxSize,队列满条件应为(rear+1)% maxSize == front,当maxSize为5如上图中的左图,front=0而rear=4,(4+1)%5=0,所以此时队列满。再比如上图中的右图,front=2而rear=1。(1+1)%5=2,所以此时队列也是满的。而对于下图,front=2而rear=0,(0+1)%5=1,1≠2,所以此时队列并没有满。

     

    数组模拟队列思路(循环队列):

    1. 定义maxSize(数组最大容量),front初始值(队头值为0),rear初始值(指向队列最后一个元素的后一个位置,空闲单元),数组(存放数据模拟队列)

    2. 新建方法将数组最大容量设置为maxSize

    3. 新建方法根据(rear+1)% maxSize == front判断队列是否为满

    4. 新建方法根据rear == front判断队列是否为空

    5. 新建添加队列方法,使用第3步判断队列是否为满,未满添加数据,使用rear =(rear+1)% maxSize将rear后移

    6. 新建出队列方法,使用第4步判断队列是否为空,不为空定义临时变量获取队列第一个元素,value = arr[front];使用front = (front+1)% maxSize将front后移,返回value

    7. 新建显示当前队列有效数据个数方法,根据(rear-front+maxSize)% maxSize将值返回,显示队列所有数据,判断队列是否为空,不为空for循环,i=front,i<front+队列数据个数System.out.printf("arr[%d]=%d ", i % maxSize, arr[i % maxSize]);

  • 相关阅读:
    C++ 编写strcpy函数
    JavaScript抽象类及Class.create备忘
    读:<测试一下你解决问题的逻辑思维及算法能力>后
    JavaScript AJAX类
    MOSS ad组的获取及Hashtable作缓存总结
    Js获取元素位置及动态生成元素的练习备忘
    NET许可证及License
    Javascript获取元素位置及其它
    hdu 149850 years, 50 colors 最大匹配
    poj 2513 Colored Sticks 字典树
  • 原文地址:https://www.cnblogs.com/kmcl1314/p/14596340.html
Copyright © 2020-2023  润新知