随笔 - 105  文章 - 0  评论 - 0  阅读 - 40744

数据结构

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

数组与列表

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

栈与队列

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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   Treelight  阅读(144)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
历史上的今天:
2019-06-26 Mysql
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示