数据结构--基本数据结构

1.基本数据类型区分如下:

2.线性表:

2.1顺序表:

        元素在内存之中,是连续顺序存储的,在内存中划分的是一块连续的区域

         

2.2链表:

         在一块内存中分散存储,结点之间以指针连接(逻辑上成为一个整体,物理分散,逻辑整体)


         


2.2.1链表的类别

           单链表:从头结点开始,单向的连接起来的数据结构,每一个结点有两个域(前面为数据域,后面为指针域指向下一个结点的地址)

          

          单链表结点的删除:将a1的指针域直接指向a3即可,a2直接释放

        

          单链表结点的插入:直接将P的指针域指向S,将S的指针域指向a3所在结点 

          具体如下:先将S和和a3所在结点连接(a3原来为P--next,将P--next赋值给S--next),再连接P和S(将S肤质给P--next)。

                            话描述起来有点绕,就是如果P先连接S,P--next的值就会变化。a3由P--next指向连接,a3的P--next  和 新的P--next不一致,就无法连接了,脱节了。

          




         循环链表:和单链表非常相似,循环链表的最后一个结点的指针域,指向头结点,形成了一个循环

        




        双链表:有两个指针域,前面一个后面一个,从两个方向将结点连接起来,形成了双链表,可以朝两个方向移动。灵活度优于单链表,但内存开支更大。

       

       双链表的删除:直接删除和单链表一样

       

       双链表的插入:可以拆分为两个单链表的插入(只是想象的),实际顺序是 将插入结点先分别指向两个后继结点,再由两个前结点指向新插入的结点

        



2.3顺序表和链表的比较

          

2.4栈(先进后出)

          栈只是一个逻辑概念仅此而已,栈既可以用顺序存储实现,也可以用链式存储实现

          先进先出:进一个出一个,但如果栈中数据已经固定,就只能先进后出了

         

2.5队列(先进先出)

        普通形式队列,顺序结构

       

        循环队列

         head 头指针   0

         tail 尾指针    元素的下一个位置

         当未记录元素时,队头指针和队尾指针针在同一位置,存入新元素时,尾指针后移

         head = tail  队列可能为空也可能为满,避免这种情况混淆,牺牲一个空间,当tail在倒数第一个时为满,tial+1=head 为判满条件


        一定要注意 tail  是在最后一个实际元素之后的  tail是队尾指针  没有值 

       



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值