数据结构和算法


软考数据结构和算法基础:


       思维导图:

                                                         

                                                        


      知识说明:

         

            线性表:


                       数据结构按存储结构分类可以划分为四种:顺序存储、链式存储、索引存储、散列存储。

                       数据结构按逻辑结构分类可以划分为3部分:集合、线性结构、非线性结构。

                       其中线性结构的数据结构包括:一维数组、队列、栈;

                       非线性结构的数据结构包括:树、图、多维数组;

 

                下面着重介绍几个方面:

 

                      线性表是按照存储结构(顺序存储和链式存储)来划分为顺序表和链表。其中需要重点说明的是链表的操作:

                                      单链表的删除:从前向后;删除n节点;n-1节点的炼狱指向n+1;n节点释放。

                                      单链表的插入:从后向前;插入n节点;n节点的炼狱指向n+1;n-1的炼狱指向n。

                                      双链表的插入: 从后向前;插入n;  n的后链域指向n+1;  n的前链域指向n+1;   n+1的前链域指向n的后链域;   n-1的后链域指向n的前炼狱。

 

                    循环队列:包括head、tail两个涉及名称。

                                     Head 等于对头指向的是存储的第一个元素。tail等于队尾指向的是存储的最后一个元素的下一个。

                                     初始时:head和tail同指向一处。head指针不变,如果添加新元素(tail指针加+1)=tail+1;

                                     循环队列的最后一个存储位置为null====当tail指针指向null时进行tail+1=head的操作。

                          问题:

                                     最初时利用head和tail相等的条件判断存储空间为空的情况;

                                     现在出现相等的情况下还有可能是存储空间为满的情况;

                          解决:

                                     牺牲一个存储空间-----最后一个存储空间为空null值

                                      用tail+1=head来判断存储空间为满状态的情况。

 

               树和二叉树:

 

                        基本操作:

                                查找: 查找n值

                                         判断  n< => 根节点?

                                                           = 返回根节点

                                                           < 和根节点的左子树比较(重复上述判读)

                                                           < 和根节点的右子树比较(重复上述判读)

 

                                 插入:如果相同键值得节点已在查找二叉树中,则不再插入;

                                           如果查找二叉树为空树,则以新结点为查找二叉树;

                                          将要插入结点的键值与插入后的父节点的键值比较,从而确定插入结点是父节点的左子结点还是右子结点。

 

                                删除:删除节点P。

                                         如果P是叶子节点,则直接删除;

                                         如果P只有一子节点M,将M和P的父节点L相连接后,删除P;

                                          如果P有两个子节点。在P左子树上,用中序遍历找关键值最大的节点S,用S代替P的值,然后删除P。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值