0
点赞
收藏
分享

微信扫一扫

数据结构学习

宁静的猫 2022-03-20 阅读 82
网络

顺序表:

        增加元素:①表尾,②表中(不保序),③表中(保序)

        删除元素:①表尾,②表中(不保序),③表中(保序)

顺序表扩充的两种策略:

①每次扩充增加固定数目的存储位置,扩充增加10个元素位置

                                节省空间,操作次数多

       ②每次扩充容量加倍,扩充增加一倍存储空间

                                减少了扩充次数,浪费空间资源。以空间换时间

链表:

        单向链表:

length() 链表长度

travel() 遍历整个链表

add(item) 链表头部添加元素

append(item) 链表尾部添加元素

insert(pos, item) 指定位置添加元素

remove(item) 删除节点

search(item) 查找节点是否存在

插入:

头部插入

head -> new.p
new.next -> node

尾部加入:

node.next -> new
new.next -> null(空)

中间插入: 

①  判断
②  前节点.next -> new
③  new.next -> 后节点

删除:

头删除:

head -> node2

中间删除:

① 判断
② node.next -> node2

        双向链表:

        由前驱节点和后继节点组成

头部加入add

尾部加入append 

 

中间插入insert 

 

删除remove 

 

栈:

        后进后出,压入式

        加入数据(push)和输出数据(pop)

队列:

        队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表

        特殊:双端队列,是一种具有队列和栈的性质的数据结构

栈和队列的区别:

①栈后进先出,队列先进先出

②栈是删除/插入在同一段,队列是在两端进行的

③栈只允许尾部删除/插入,队列只允许表尾插入,表头删除

相同点:①线性表结构②插入在尾部③复杂度一样O(1)

串:

        序列串

树:

        二叉树,哈夫曼数,完整二叉树

        遍历(先序,中序,后序)

        先序:根,根左节点,根右节点

        中序:根左节点,根,根右节点

        后序:根左节点,根右节点,根

#先序
def xianxu(root):
    if root is None :
        return
    print(root.date,end='')
    xianxu(root.left-child)
    xianxu(root.right-child)    

#中序
def zhongxu(root):
    if root is None :
        return
    zhongxu(root.left-child)
    print(root.date,end='')
    zhongxu(root.right-child)    

#后序
def houxu(root):
    if root is None :
        return
    houxu(root.left-child)
    houxu(root.right-child) 
    print(root.date,end='')

图:

        最广,最深

举报

相关推荐

0 条评论