加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

算法(2):数据结构

发布时间:2020-12-14 04:18:41 所属栏目:大数据 来源:网络整理
导读:数据结构: 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成简单来说, 数据结构就是设计数据以何种方式组织度存储在计算机中比如:列表、集合和字典等都是一种数据结构“程序 =数据结构+算法” 数据结构的分类

数据结构:

数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成
简单来说, 数据结构就是设计数据以何种方式组织度存储在计算机中
比如:列表、集合和字典等都是一种数据结构
“程序=数据结构+算法”

数据结构的分类:

数据结构按照逻辑结构可分为线性结构、树结构和图结构
线性结构:数据结构中的元素存在一对一的相互关系
树结构:数据结构中的元素存在一对多的相互关系
图结构:数据结构中的元素存在多对多的相互关系

另外,32位机器上,一个整数占4个字节(4*8bit=32),一个地址也占4个字节

栈:

栈(Stack)是一个数据集合,可以理解为只能在一端进行插入或删除操作的列表

栈的特点:后进先出(last-in,first-out)
栈的概念:栈顶(表尾;最后一个元素),栈底(表头;0号元素)
栈的基本操作:
    进栈(压栈):push
    出栈:pop
    取栈顶(只查看栈顶的值,但不把栈顶删除): gettop
使用一般的列表结构即可实现栈

栈的应用 -- 括号匹配问题:

括号匹配问题:给一个字符串,其中包含小括号、中括号、大括号,求该字符串中的括号是否匹配
如:
    ()[]{}  # 匹配
    ([{()}])  # 匹配
    []( # 不匹配
    [(])  # 不匹配

示例代码:

class BracketError(BaseException):
    def __init__(self,msg):
        super(BracketError,self).__init__()
        self.msg = msg

    def __str__(self):
        return "<%s>" %self.msg

class Stack(object):
    """实现栈的类"""
    def __init__(self):
        self.stack = []

    def push(self,ele):
        self.stack.append(ele)
    def pop(self):
        if len(self.stack) == 0:
            return None
        return self.stack.pop()
    def get_top(self):
        if len(self.stack) == 0:
            return None
        return self.stack[-1]

    def is_empty(self):
        return len(self.stack) == 0  # 返回的是一个Bool值

# 栈的应用:括号匹配问题
def bracket_match(s):
    stack = Stack()
    match_dict = {
        ")":"(","]":"[","}":"{"
    }
    for char in s:
        if char in ["(","[","{"]: # char 为左括号
            stack.push(char)  # 左括号放到 栈 里面
        else:  # char 为右括号
            if stack.is_empty():
                raise BracketError("%s expected"%match_dict[char])
            left_bracket = stack.get_top()
            if match_dict[char] != left_bracket:
                raise BracketError("%s not match"%char)
            else:
                stack.pop()
    if not stack.is_empty():
        raise BracketError("lacking corresponding right brackets")

s = "}[]()"
bracket_match(s)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读