数据结构继承

数据结构

就是能够用一根线串起来的数据结构

数组 (列表)

  • 问:申请数组的前提条件是啥? a[12]?内存需要满足的条件?
  • 答:内存必须有一块连续的内存空间

int a[7] : 声明一个数组,这个数组的数组名是 a, 数组的大小是 7, 数组元素的类型是整型。 int a[7] = array(1,2,3,4,5,6,7)

  • 问:如何申请内存?
  • 答:C,C++语言,申请:mallco (28)。释放:free(28)

  • 问:int a[7] = [1,2,3,4,5,6,7] a[3] = 4?

  • 答:a[3] = 首地址(1000) + 索引(3) * 类型长度(4) = 1012 --- 1015


  • 问:数组首地址从哪获取?
  • 答:数组首地址保存在数组名中

链表

(约瑟夫,丢手绢问题)

data 为自定义的数据,next 为下一个节点的地址。

class Hero():

    def __init__(self, no=None, name=None, nickname=None, pNext=None):
        self.no = no
        self.name = name
        self.nickname = nickname
        self.pNext = pNext


def add(head, hero):
    #### head 节点不能动,因此需要第三方的临时变量帮助head去遍历
    cur = head

    while cur.pNext != None:
        ### 把下一个节点的内存地址付给  cur ,那此时cur就指向下一个节点
        cur = cur.pNext

    ### 当退出上述循环的时候偶,cur就已经指向尾节点
    cur.pNext = hero

def getAll(head):
    cur = head

    while cur.pNext != None:
        cur = cur.pNext
        print('编号是:%s, 名称是:%s, 外号是:%s' % (cur.no, cur.name, cur.nickname))


def delHero(head, no):
    cur = head

    while cur.pNext != None:
        if cur.pNext.no == no:
            break
        cur = cur.pNext

    cur.pNext = cur.pNext.pNext


head = Hero()

h1 = Hero(1, '宋江', '及时雨')
add(head, h1)

h2 = Hero(2, '卢俊义', 'xxx')
add(head, h2)

h3 = Hero(3, '西门庆', 'dsadsad')
add(head, h3)

getAll(head)


  • 一般树

    • 任意一个节点的子节点的个数不受限制
  • 二叉树

    • 定义:任意一个节点的子节点的个数最多是两个,且子节点的位置不可更改
    • 满二叉树
      • 定义:在不增加层数的前提下,无法再多添加一个节点的二叉树
    • 完全二叉树
      • 定义:只是删除了满二叉树最底层最右边连续的若干个节点
    • 一般二叉树
  • 森林

猜你喜欢

转载自www.cnblogs.com/kai-/p/12627843.html
今日推荐