数据结构与算法 学习笔记 2021年12月13日

复习:
        1、什么是数据结构
                是专门研究数据关系和操作的学科,而非计算方法
                数据结构+算法=程序
        2、逻辑结构和物理结构:
                逻辑结构:
                        集合:除了同处于一个集合外,数据之间没有任何关系
                        表:数据之间存在一对一的关系
                        树:数据之间存在一对多的关系
                        图:数据之间存在多对多的关系
                物理结构:
                        顺序结构:数据存储在连续的内存中,使用数据的相对位置来表示数据之间的关系
                        链式结构:数据分散存储在内存的任何位置,数据项中有一块指针域用来表示数据之间的关系
                逻辑结构和物理结构的对应关系:
                        表:        顺序、链式
                        树:        链式、顺序
                        图:        顺序+链式
        3、数据结构的运算
        创建、销毁、清空、添加、插入、删除、查询、访问、修改、排序、遍历
        4、表结构
                顺序表:        数组
                链式表:        链表
                常见面试题:        数组和链表的优缺点?
        5.功能受限的表结构
                栈:        只有一个出入端口,先进后出
                        顺序栈有四种:
                                top初值:0                入栈        top++      空增栈
                                top初值:-1              top++       入栈        满增栈
                                top初值:cal-1          入栈        top--        空减栈
                                top初值:cal             top--        入栈        满减栈
                队列:有两个出入端口,队尾智能进,队头只能出,先进后出        FIFO
                        链式队列:
                                数据项:
                                        存储元素的内存首地址
                                        容量
                                        队头
                                        队尾
                                运算:创建、销毁、入队、出队、队头、队尾、数量
                注意:
                        由一堆数组+队头front+队尾rear组成,入队rear+1,出队front+1,为了让队列能反复使用,我们要把一堆数组想象成一个环,因此front、rear加1后要用队列的容量求余重新赋值
        rear=(rear+1)%cal
        front=(front+1)%cal
如何判断队空: front==rear
如何判断队满:front==(rear+1)%cal
1、代价是空一格位置不能使用(常考)
2、添加一个数据项标记队列中元素的数量,以此也可以解决队空队满的问题
如何获取元素数量:
        (rear-fornt+cal)%cal
链式队列:
        由若干个节点组成的队列
        队列数据项:
                队头指针
                队尾指针
                节点数量
        运算:创建、销毁、队空、入队、出队、队头、队尾、数量
队列的应用:
        1、消息队列
        2、树的层序遍历
        3、图的广度优先遍历
        4、线程池、数据池
常考的笔试面试题:
        使用两个栈来模拟一个队列的功能
                从s1入到s2,一个不留
                s2如果不空,不能让s1到s2
封装链表:
        链表的尾添加效率低、对非法下标的判断效率非常低
        1、单链表
        2、静态链表
        3、循环链表
        4、双向链表
        5、内核链表
        6、通用链表
        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值