首页 > 编程语言 >数据结构(Python)

数据结构(Python)

时间:2024-12-02 15:04:42浏览次数:7  
标签:10 Python self 30 current print 数据结构 append

目录

1. 数组(Array)

2. 链表(Linked List)

3. 栈(Stack)

4. 队列(Queue)

5. 哈希表(Hash Table)

6. 树(Tree)

7. 图(Graph)


1. 数组(Array)

  • 特点:连续的内存空间,支持快速随机访问。
  • 适用场景:需要频繁读取数据,但对插入、删除操作要求不高。

示例:使用列表实现数组

# 定义一个数组
array = [10, 20, 30, 40]

# 访问元素
print(array[2])  # 输出:30

# 插入元素
array.insert(2, 25)  # 在索引2位置插入25
print(array)  # 输出:[10, 20, 25, 30, 40]

# 删除元素
array.pop(2)  # 删除索引2位置的元素
print(array)  # 输出:[10, 20, 30, 40]

2. 链表(Linked List)

  • 特点:通过指针将一组节点连接起来,分为单链表和双链表。
  • 适用场景:插入和删除频繁,但随机访问不常用。

示例:实现单链表

class Node:
    def __init__(self, value):
        self.value = value
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = None

    def append(self, value):
        new_node = Node(value)
        if not self.head:
            self.head = new_node
            return
        current = self.head
        while current.next:
            current = current.next
        current.next = new_node

    def display(self):
        current = self.head
        while current:
            print(current.value, end=" -> ")
            current = current.next
        print("None")

# 创建链表并操作
ll = LinkedList()
ll.append(10)
ll.append(20)
ll.append(30)
ll.display()  # 输出:10 -> 20 -> 30 -> None

3. 栈(Stack)

  • 特点:后进先出(LIFO),只能从栈顶操作。
  • 适用场景:递归处理、括号匹配、函数调用等。

示例:用列表实现栈

stack = []

# 压入栈
stack.append(10)
stack.append(20)
stack.append(30)

# 弹出栈
print(stack.pop())  # 输出:30
print(stack)  # 输出:[10, 20]

4. 队列(Queue)

  • 特点:先进先出(FIFO)。
  • 适用场景:任务调度、消息传递。

示例:用 collections.deque 实现队列

from collections import deque

queue = deque()

# 入队
queue.append(10)
queue.append(20)
queue.append(30)

# 出队
print(queue.popleft())  # 输出:10
print(queue)  # 输出:deque([20, 30])

5. 哈希表(Hash Table)

  • 特点:通过哈希函数实现快速查找、插入。
  • 适用场景:需要高效的键值对存储和查找。

示例:用字典实现哈希表

hash_table = {}

# 插入键值对
hash_table['name'] = 'Alice'
hash_table['age'] = 25

# 访问元素
print(hash_table['name'])  # 输出:Alice

# 删除键值对
del hash_table['age']
print(hash_table)  # 输出:{'name': 'Alice'}

6. 树(Tree)

  • 特点:层次结构的数据结构,每个节点有子节点。
  • 适用场景:搜索、排序、层次分类。

示例:实现二叉树

class TreeNode:
    def __init__(self, value):
        self.value = value
        self.left = None
        self.right = None

def inorder_traversal(node):
    if not node:
        return
    inorder_traversal(node.left)
    print(node.value, end=" ")
    inorder_traversal(node.right)

# 创建二叉树
root = TreeNode(10)
root.left = TreeNode(5)
root.right = TreeNode(15)

# 遍历
inorder_traversal(root)  # 输出:5 10 15

7. 图(Graph)

  • 特点:节点通过边连接,可以是有向或无向。
  • 适用场景:网络连接、最短路径、推荐系统。

示例:用邻接表表示图

graph = {
    'A': ['B', 'C'],
    'B': ['A', 'D'],
    'C': ['A', 'D'],
    'D': ['B', 'C']
}

# 深度优先搜索
def dfs(graph, start, visited=None):
    if visited is None:
        visited = set()
    visited.add(start)
    print(start, end=" ")
    for neighbor in graph[start]:
        if neighbor not in visited:
            dfs(graph, neighbor, visited)

dfs(graph, 'A')  # 输出:A B D C

 

 

 

标签:10,Python,self,30,current,print,数据结构,append
From: https://blog.csdn.net/weixin_45710998/article/details/144188464

相关文章

  • python第九章课后习题
    9.2某车间生产滚珠,随机的抽出了50粒,测得他们的直径为(单位mm)15.015.815.215.115.914.714.815.515.615.315.115.315.015.615.714.814.514.214.914.915.215.015.315.615.114.914.214.615.815.215.915.215.014.914.814.515.115.515.515.115.1......
  • 华水967数据结构2005真题---选择题部分
    一.选择题1.在数据结构中,从逻辑上可以把数据结构分成()。A、动态结构和静态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构答案:C解析:A.动态结构和静态结构:这个分类更多地涉及到数据结构的可变性,而不是其逻辑组织形式。动态结构通常指可......
  • python毕设 “汪小喵”小区宠物管理系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景随着人们生活水平的提高,宠物在小区中的数量日益增多,小区宠物管理成为一个重要的课题。关于小区宠物管理问题的研究,现有研究主要以城市......
  • python3通过驱动包连接oceanbase并将数据导出为excel
    1.创建文件夹driver并将驱动包放到项目中2.编写db_config配置#db_config.py#驱动包路径driver_path='../driver/oceanbase-client-2.2.9.jar'#连接参数url='jdbc:oceanbase://osidaoobdit01.cn-shanghai-finance-1.oceanbase.aliyuncs.com:1526/***?pool=false'......
  • python - 反射
    importtypesimportlogger_factoryimporttyping#从import的对象中,直接获取属性logger=getattr(logger_factory,"logger")print(logger)#通过class创建对象classMyClass:def__init__(self):self.value=NonedefgetValue(self):......
  • OpenCV图像处理——图像滤波原理与代码实现(C++/Python)
    概述本节主要总结常见的图像噪声,以及降噪的方法。1.图像噪声图像噪声是指图像中不需要的、随机出现的像素值变化,这些变化可能是由于传感器误差、传输误差、环境干扰等因素引起的。图像噪声会降低图像质量,影响图像处理和分析的结果。1.1高斯噪声高斯噪声,也称为白噪声......
  • 用Python计算预测数据和原始数据对应点误差的平方和的均值
    为了计算预测数据和原始数据对应点误差的平方和的均值(MeanSquaredError,MSE,即均方误差),我们可以使用Python中的基本数学运算或借助`scikit-learn`等库来实现。下面是一个简单的示例,展示如何计算这个指标。###方法1:使用Python基本运算```pythonimportnumpyasnp#原始数据(真......
  • python - 字符串(str)
    例举一下常规用法print('字符串定义')str1='str'str2="str"#声明段落str3='''paragraph'''#使用续行符str4="line1\line2"print('字符串拼接')ret=str1+''+str2print(ret......
  • python - 列表(list)
    创建一个列表时,系统会分配一定的空间,当新增元素个数超出这个空间时,会自动进行扩容。这个结论很容易找到,我们可以写一段代码证明一下,内存占用是阶段变化的。fromsysimportgetsizeofli=[]foriinrange(64):li.append(i)print(f'length:{len(li)},size:{get......
  • python - 字典(dict)
    字典(dict):基于哈希表的一种数据结构,从原理上来说,与其它语言中的map是同一类东西。#创建一个空字典importjsonordered_dict={'a':1}print(ordered_dict)#向字典中添加一些键值对ordered_dict['b']=2ordered_dict['c']=3ordered_dict['d']=4print(ordered......