数据结构基本概念

复习:

    1丶什么是数据结构

        是专门研究数据之间关系的操作的学科,而非计算方法

        数据结构+算法=程序

    2丶逻辑结构与物理结构

        逻辑关系:

            集合:除了同属一个集合体外,数据之间没有任何关系

            表:数据之间存在一对一关系

            树形结构:一对多

            图:多对多

        物理结构:

            顺序结构:

                数据存储在连续的内存空间中,使用数据的相对位置来表示数据之间的关系

            链式结构:

                数据分散存储在内存中的任意位置,数据项中增加一块指针域用来表示数据之间的关系

        逻辑关系与物理关系的对应:

            表:顺序 链式

            树:链式 顺序

            图:顺序+链式

    3丶数据结构的运算

        创建丶销毁丶清空丶添加丶删除丶查询丶访问丶修改丶排序丶遍历

    4丶表结构

        顺序表:数组

        链式表:链表

        常考面试题:数组和链表的优缺点:

    5丶功能受限的表

        栈:只有一个出入端口,先进后出

            顺序栈有四种:

                top初值: 0     入栈    top++   空增栈

                top初值:-1     top++   入栈    满增栈

                top初值:cal-1  入栈    top--   空减栈

                top初值:cal    top--   入栈    满减栈

        队列:有两个出入端口,队尾只能进,队头只能出,先进先出

            链式队列:

                由若干个节点组成的队列

                数据项:

                    队头指针

                    队尾指针

                    节点数量

                运算:创建丶销毁丶队空丶入队丶出队丶队头丶队尾丶数量


 

        队列的应用:

            1丶消息队列

            2丶层序遍历

            3丶图的广度优先

            4丶封装线程池丶数据池

            常见的笔试面试题:使用两个栈来模拟一个队列的功能

            从栈1到栈2必须一个不留地入栈

            如果栈2不空,栈1不能入栈2

            栈1满栈2不空就不能再入队

封装链表:

    1丶单链表

        原因:尾添加效率低丶非法下标判断低

        节点:

            数据域

            指针域

        链表的数据项:

            头指针

            尾指针

            节点数量


 

    2丶静态链表:

    节点:

        数据域  data

        游标    int i

        静态链表的节点存储在连续的内存中。通过游标来访问下一个节点

        这种链表在插入删除时只需要修改游标的值,而不用重新申请丶释放内存从而达到链式表结构的效果

        牺牲了随机访问的功能,主要是提供给没有指针的编程语言实现单链表的一种方法

        Node* head=list[0]

        Node head->next=list[list[0]];

    3丶循环链表

        链表的最后一个节点的next不再指向NULL,而是指向头节点,这种链表叫做单向循环链表,简称循环链表,好处是可以通过任意节点遍历整个链表

    4丶双向链表

        节点:

            前驱指针

            数据域

            后继指针

        链表数据项:

            头节点

            节点数量

        双向链表的特点:

            1丶从任意节点都可以遍历整个链表

            2丶删除丶增加就不需要定位待操作节点的上一个

            3丶如果已知节点数量,要删除已知位置节点,可以选择从前到后或从后到前进行遍历,从而提高链表的操作效率

    5丶Linux内核链表

        既然链表不能包含万物,就让万物包含链表




 

        

    6丶通用链表

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值