首页 > 其他分享 >数据结构基础概念

数据结构基础概念

时间:2024-04-13 14:33:31浏览次数:22  
标签:self 基础 链表 概念 数组 数据结构 data 节点

数据结构基础概念

数据结构概念

数据结构是计算机科学中用于组织和存储数据的方式。它定义了数据之间的关系,提供了一组操作以访问和修改数据。选择合适的数据结构对于解决特定问题至关重要,不同的数据结构适用于不同的应用场景。以下是数据结构的基本概念:

  1. 数据元素:数据结构中的基本单元,可以是一个值、一个变量或一个记录。
  2. 数据项:数据元素中的一个组成部分,是数据结构中最小的、不可分割的单位。
  3. 数据结构的逻辑结构:包括线性结构(如数组、链表)、树形结构(如二叉树)、图结构等。
  4. 数据结构的物理结构:包括顺序存储(数组)和链式存储(链表)等。
  5. 操作:对数据结构进行的操作,包括插入、删除、查找等。

数组

数组是一种线性结构,它存储相同类型的元素,并通过索引访问。数组具有固定的大小,一旦创建,大小通常无法更改。以下是数组的基本特点:

  1. 随机访问:可以通过索引直接访问数组中的任何元素。
  2. 连续存储:数组的元素在内存中是连续存储的。
  3. 固定大小:数组一旦创建,其大小通常无法更改。
  4. 例子:在 Python 中,可以使用列表来实现类似数组的功能。
my_array = [1, 2, 3, 4, 5]

链表

链表是一种线性结构,它通过节点之间的指针来连接元素。每个节点包含数据和指向下一个节点的指针。链表可以是单向的、双向的,也可以是循环的。以下是链表的基本特点:

  1. 动态大小:链表可以动态地增长或缩小。
  2. 随机访问:需要从头节点开始遍历链表,无法直接通过索引访问元素。
  3. 非连续存储:链表的节点在内存中不一定是连续存储的。
  4. 例子:在 Python 中,可以使用指针或类来实现链表。
class Node:
    def __init__(self, data=None):
        self.data = data
        self.next = None

树是一种层级结构,由节点和边组成。树的最上层节点称为根节点,每个节点可以有零个或多个子节点。以下是树的基本特点:

  1. 层级结构:树具有层级关系,每个节点除了根节点外都有一个父节点。
  2. 根节点:树的最上层节点称为根节点,没有父节点。
  3. 叶节点:没有子节点的节点称为叶节点,位于树的末端。
  4. 子树:树中的任意节点和其子孙节点可以看作是一个子树。
  5. 例子:二叉树是一种常见的树结构,每个节点最多有两个子节点。
class TreeNode:
    def __init__(self, data):
        self.data = data
        self.left = None
        self.right = None

def insert(root, data):
    if root is None:
        return TreeNode(data)
    else:
        if data <= root.data:
            root.left = insert(root.left, data)
        else:
            root.right = insert(root.right, data)
    return root

def search(root, data):
    if root is None or root.data == data:
        return root
    if root.data < data:
        return search(root.right, data)
    return search(root.left, data)

# 测试代码
def main():
    root = None
    root = insert(root, 10)
    root = insert(root, 5)
    root = insert(root, 15)
    root = insert(root, 3)
    root = insert(root, 7)
    
    search_result = search(root, 7)
    if search_result:
        print("Node found:", search_result.data)
    else:
        print("Node not found")

if __name__ == "__main__":
    main()

标签:self,基础,链表,概念,数组,数据结构,data,节点
From: https://www.cnblogs.com/zx-demo/p/18132826

相关文章

  • 数据结构知识框架
    数据结构知识框架B树平衡的多叉树性质根结点至少有两个孩子每个非根结点至少有M/2(上取整)个孩子,至多有M个孩子每个非根结点至少有M/2-1(上取整)个关键字,并且以升序排列key[i]和key[i+1]之间的孩子结点的值介于key[i]、key[i+1]之间所有的叶子结点都在同一层B+树性质......
  • QML::自绘基础控件
    自绘基础控件1.01Button,对属性进行封装,如字体、背景颜色、前景文字显示、(选择、悬停、按下)状态变化。对外提供必要的设置属性。importQtQuick2.0importQtQuick.Controls2.5importQtGraphicalEffects1.12Button{id:container//提供对外字段属性prop......
  • 第二章 Pytorch基础
    2.1Pytorch张量学习心得:标量是0维张量向量可以表示一维张量(轴0)形状(4,)二维矩阵表示二维张量(上到下轴0,左到右轴1)形状(4,3)三维维矩阵表示三维张量(上到下轴0,左到右轴1,外到内轴2)形状(4,3,2)初始化张量importtorchx=torch.tensor([[1,2]])y=torch.tensor([[1],[2]])print(......
  • HarmonyOS-基础之联系人案例
    使用前面学习的相关组件和api实现联系人的CRUD;效果如下父组件import{Contacts}from'../domain/Model'importContactsItemfrom'../components/ContactsItem'@Entry@ComponentstructContactsExample{//联系人数组@StatecontactsArr:Contacts[]=[......
  • C++ 解引用与函数基础:内存地址、调用方法及声明
    C++解引用获取内存地址和值在上一页的示例中,我们使用了指针变量来获取变量的内存地址(与引用运算符&一起使用)。但是,你也可以使用指针来获取变量的值,这可以通过使用*运算符(解引用运算符)来实现:stringfood="Pizza";//变量声明string*ptr=&food;//指针声明//引用......
  • 基础组合数学
    byTheBigYellowDuck联赛前恶补知识点...排列数&组合数从\(n\)元集合中选出\(m\)个元素的有序排列数记为\(A_n^m\)。计算公式为\[\displaystyleA_n^m=n(n-1)(n-2)\cdots(n-m+1)=\dfrac{n!}{(n-m)!}\]从\(n\)元集合中选出\(m\)个元素的无序排列数记为\(C_n^m\),......
  • 基础数论
    byTheBigYellowDuck联赛前恶补知识点...欧拉函数欧拉函数\(\varphi(n)\)表示\(1\simn\)中与\(n\)互质的数的个数。欧拉函数是积性函数。特殊地,\(\varphi(1)=1\)。对于质数\(p\)显然有\(\varphi(p)=p-1\)。一些常用的结论:设\(p\)是质数,则\(\varphi(p^k)=p^k......
  • 后缀数据结构
    byDuck.后缀数组参考:后缀数组简介-OIWiki后缀数组(SuffixArray,SA)可以在\(\mathcal{O}(n\logn)\)的复杂度内对\(S\)的每个后缀进行字典序排序。记后缀\(i\)表示后缀\(S[i,n]\)。SA的核心在于得到两个数组\(sa,rk\)。\(sa_i\)表示字典序排名为\(i\)的后缀位......
  • 第一章 人工神经网络基础
    1.1人工智能与传统机器学习学习心得:传统机器学习(ML):需要专业的主题专家人工提取特征,并通过一个编写良好的算法来破译给定的特征,从而判断这幅图像中的内容。输入-->人工提取特征-->特征-->具有浅层结构的分类器-->输出当存在欺骗性的图片出现时可能会失效,我们需要创建能够精细......
  • Java基础知识篇02——封装
    大家好,我是白夜,今天给大家聊聊面向对象的三大特征——封装一、包(package)1.1、包的引入先来看看我们之前写的代码结构以上代码存在的问题所有类写在一个目录下面,非常难管理,因为以后项目不可能只有这么几个类,当类数量很大的时候,就不容易管理了。不能写同名但是不同需求的类......