数据结构

数据结构可分为三种结构:线性结构(一对一)、树结构(一对多)、图结构(多对多)

数组与列表

相信大家应该知道Python中有列表这种数据结构,而其它语言中基本上都有数组这种数据结构。列表与数组有什么区别呢?主要区别是:列表中的数据类型可不同,其长度是可改变的;而数组要求每个元素的数据类型相同,其长度是固定的。为什么会造成这样的不同?这是由于它们的存储方式不同。在数组中,每个元素存放的是真实的值,而且必须要声明其长度,以方便开辟空间;而列表,每个元素存放的是内存地址,此地址指向的是具体的值,此值可不同的数据类型。而且如果列表占用的空间超过范围,Python会复制此列表到另外一个更大的空间,所以其长度可变的。

栈与队列

什么是栈?栈是一种数据集合,只能在一端进行插入或删除操作,它就像以上的那一堆书,后进先出。基本操作有进栈(li.append)、出栈(li.pop)、取栈顶(li[-1]),可在列表中实现。

可用于栈实现判断括号是否匹配

def brace_match(s):
    stack = []
    match = {')': '(', ']': '[', '}': '{'}
    match2 = {'(': ')', '[': ']', '{': '}'}
    for ch in s:
        # 如果是左括号添加到栈里
        if ch in ['(', '[', '{']:
            stack.append(ch)
        # 如果栈为空,则表明缺少左括号
        elif len(stack) == 0:
            print('缺少%s' % match[ch])
            return False
        # 如果括号匹配,则清空此括号
        elif stack[-1] == match[ch]:
            stack.pop()
        # 括号不匹配
        else:
            print('括号不匹配')
            return False
    # 栈不为空,表明缺少右括号
    if len(stack) > 0:
        print('缺少%s' % match2[stack[-1]])
        return False
    print('括号匹配成功')
    return True

队列

队列也是一个数据集合,公允许在列表的一端进行插入,另一端进行删除。进行插入的一端称为队尾,插入动作称为进队或入队;进行删除的一端称为队头,删除动作称为出队。其性质:先进先出。
双向队列:队列的两端都允许进行进阶和出队操作。

posted on 2020-06-26 15:43  Treelight  阅读(140)  评论(0编辑  收藏  举报