zoukankan      html  css  js  c++  java
  • 408数据结构辨析记录存档

    线性表

    头指针和头结点
    头指针:通常用来标识一个单链表,头指针为NULL时表示一个空表
    单链表第一个结点之前附加一个结点,为头结点,指针域指向线性表的第一个元素结点。
    区分:不管带不带头结点,头指针都始终指向链表的第一个结点,而头结点是带头结点的链表中的第一个结点,通常不存储信息。
    如果有头结点,头指针就指向头结点。
    L=(LinkList)malloc(sizeof(LNode)); L为头结点地址。
    所以 带头结点的双循环链表L为空的条件是:
    L->prior==L && L->next==L

    疑惑1:给定有n个元素的一维数组,建立一个有序的单链表的最低时间复杂度是:O(nlogn)
    当一维数组有序时,时间复杂度最低,为O(n)

    静态链表用于需要较大储存空间的情况(个人觉得是需要预先分配的情况下)
    题目:需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构为:静态链表
    不是单链表的原因猜想:单链表动态分配内存,大概会分配堆栈空间,而静态链表可以定义在外部,存放在静态区,可以分配更大的空间

    栈和队列

    若一个栈的输入序列是P1,P2,...Pn,输出序列是1,2,3,...,n,若P3=1,则P1的值 不可能是2.

    一个栈的入栈序列为1,2,3,...,n,出栈序列是P1,P2,P3,...,Pn。若P2=3,则P3可能取值的个数是 n-1
    P2为3时,P1有三种可能
    P1=1,P2=3,则P3=2或4...n
    P1=2,P2=3,则P3=1或4...n
    P1=4,P2=3,则P3=2或5...n
    并运算,得到P3可能的取值为1,2,4,5...n,共n-1个。

    队列

    队列定义中的MaxSize,为队列中元素的最大个数。当用链表实现队列且牺牲一个单元时,计算队满队空等条件时,无需将MaxSize-1。
    链式储存结构,front->a1->a2->...->an,rear指向an。rear删除,front插入(和链表箭头顺序相反)。
    最适合用作链队的链表时 带队首指针和队尾指针的非循环单链表。(非循环单链表相比循环单链表在插入和删除时要少操作几次next和prior的更改)

    应用

    中缀表达式转换成后缀表达式


    期待讨论


    一以贯之的努力 不得懈怠的人生 每天的微小积累会决定最终结果 ————————裴之

    欢迎加我QQ:1136244161一起讨论,共同进步
  • 相关阅读:
    Web前端性能优化-资源合并与压缩
    关于 ES5 & ES6 数组遍历的方法
    代码优化
    解决 Vue 刷新页面后 store 数据丢失的问题
    Lombok
    Dao 与 Dto
    物理删除与逻辑删除的区别
    Java 创建对象的几种方式
    SSM + SpringBoot 常用注解
    Json Web Token (JWT)
  • 原文地址:https://www.cnblogs.com/moomight/p/15083053.html
Copyright © 2011-2022 走看看