• 数据结构与算法(1)线性结构


    线性表

      (1)顺序表

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

                               

      (2)链表

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

     

         

                1.单链表

      

                2.循环链表

     

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

     

    顺序表和链表的对比:

     

    队列 ---  先进先出(FIFO)

      (1)顺序队列

         

               1)队空:head = tail

               2)队满:tail = m

      (2)循环队列

            

             1)队空:head = tail

             2)队满:tail + 1 = head

     

     

    栈 ---  后进先出(LIFO)

         常见操作

        1、入栈(队)
        2、出栈(队)
        3、判空
        4、判满
        5、初始化
        6、获取队列(栈)大小

    堆与栈的区别

    一、程序的内存分配

    • 栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其

      操作方式类似于数据结构中的栈。

    • 堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回

      收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。

    • 全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的

      全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另

      一块区域。 - 程序结束后由系统释放。

    • 文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放

    • 程序代码区—存放函数体的二进制代码。

    二、从管理方式来讲

    • 对于栈来讲,是由编译器自动管理,无需我们手工控制;

    • 对于堆来说,释放工作由程序员控制,容易产生内存泄露(memory leak)

    三、从申请大小大小方面讲

    • 栈空间比较小

    • 堆控件比较大

    四、从数据存储方面来讲

      - 栈空间中一般存储基本类型,对象的地址

      - 堆空间一般存放对象本身,block的copy等

     

  • 相关阅读:
    Sql Server 创建表(可重复执行--范本)
    Sql Server 存储过程(可重复执行--范本)
    table设置了colspan之后出现td宽度显示不正常
    textarea 自适应高度
    获取系统文件
    牛客网前端编程:计算给定数组 arr 中所有元素的总和
    牛客网前端编程:删除数组中特定元素
    牛客网前端编程:找出元素 item 在给定数组 arr 中的位置
    element+vue:将Unix时间戳转化标准格式
    vue-router使用
  • 原文地址:https://www.cnblogs.com/sweetyu/p/5012817.html
Copyright © 2020-2023  润新知