码迷,mamicode.com
首页 > 编程语言 > 详细

算法(2):数据结构

时间:2018-10-16 23:58:46      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:一个   计数   32位   数据   图结构   概念   base   匹配   数据集   

数据结构:

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

数据结构的分类:

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

另外,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)

 

算法(2):数据结构

标签:一个   计数   32位   数据   图结构   概念   base   匹配   数据集   

原文地址:https://www.cnblogs.com/neozheng/p/9799384.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!