• 数据结构(C语言版)概念、数据类型、线性表


    数据结构(C语言)基本概念

    数据的基本单位

    数据的基本单位是位(bit)和字节(byte)。位是最小的存储单位,它可以表示一个二进制的0或1。字节由8个位组成,用于表示一个字符或数字。在计算机中,常用的数据单位还有千字节(KB)、兆字节(MB)、吉字节(GB)等,它们分别是1024字节、1024千字节和1024兆字节。

    数据相关定义 

    数据(data):所有能输入到计算机中的符号,包含 数值型数据与非数值数据(文本,字符,文件等)
    数据元素(data element): 数据的基本单位,也称节点(node)或记录(record)
    数据项(data item): 有独立含义的数据最小单位,也称为域 (feild)
    数据对象(data object):相同特性的数据元素的集合
    数据结构(data structure): 相互之间存在一种或者多种关系的数据元素的集合
     

    数据的逻辑结构 

    数据的逻辑结构指的是数据元素之间的关系,它描述了数据元素之间的逻辑关联和组织方式。常见的数据逻辑结构有以下几种:

    1. 线性结构:数据元素之间存在一对一的关系,即每个数据元素只有一个直接前驱和一个直接后继,形成线性序列。常见的线性结构有线性表、栈、队列等。

    2. 非线性结构:数据元素之间存在一对多或多对多的关系,即一个数据元素可能有多个直接前驱或直接后继。常见的非线性结构有树、图等。

    3. 集合结构:数据元素之间没有任何特定的顺序关系,每个元素都是平等的,且各个元素之间相互独立。常见的集合结构有集合、哈希表等。

    4. 顺序结构:数据元素之间存在一种顺序关系,即数据元素的排列顺序是固定的。常见的顺序结构有数组、链表等。

    5. 嵌套结构:数据元素可以包含其他数据元素,形成层次关系或者复杂的结构。常见的嵌套结构有树、图等。

    四种基本结构:

    (1)集合:结构中的数据元素之间除了“同属一个集合”的关系之外,别无其他关系;
    (2)线性结构:结构中的数据元素之间存在一个对一个的关系;
    (3)树形结构:结构中的数据元素之间存在一个对多个的关系;
    (4)图状结构或网状结构:结构中的数据元素之间存在多个对多个的关系。

    这些逻辑结构在实际应用中可以灵活组合和应用,以满足不同的数据处理需求。

    数据的存储结构 

    数据的存储结构是指在计算机系统中,用于存储和组织数据的方式。常见的数据存储结构有以下几种:

    1. 数组(Array):是一种线性结构,将相同类型的数据按顺序存储在连续的内存空间中。可以通过索引值快速访问数组中的元素。

    2. 链表(Linked List):也是一种线性结构,但元素不一定连续存储。每个元素包含数据和指向下一个元素的指针,通过指针可以进行遍历和访问。

    3. 栈(Stack):是一种特殊的线性结构,采用后进先出(LIFO)的原则。只能在栈顶进行插入和删除操作,类似于一摞盘子。

    4. 队列(Queue):也是一种线性结构,采用先进先出(FIFO)的原则。只能在队尾插入元素,在队首删除元素,类似于排队等候。

    5. 树(Tree):是一种非线性结构,由节点和边组成。每个节点可以有多个子节点,形成层次关系。常见的树结构包括二叉树、二叉搜索树等。

    6. 图(Graph):也是一种非线性结构,由节点和边组成。节点之间的关系可以是任意的,常用于表示网络、社交关系等复杂结构。

    7. 散列表(Hash Table):使用散列函数将数据映射到固定大小的数组中,可以快速进行插入、查找和删除操作。适用于需要快速查找的场景。

    以上仅是常见的数据存储结构,实际应用中还可能会使用其他更复杂的数据结构来满足特定需求。

    按值的不同特性,高级语言中数据类型 

    高级语言中的数据类型可以根据其特性分为几个不同的类型,包括:

    1. 基本数据类型:这些类型包括整数、浮点数、字符和布尔值。基本数据类型在内存中占用固定的空间,并具有特定的取值范围和操作规则。

    2. 组合数据类型:这些类型包括数组、结构体和枚举。数组是一组相同类型的元素的集合,结构体是一组不同类型的数据成员的集合,而枚举是一组离散的命名常量。

    3. 引用数据类型:这些类型包括指针和引用。指针是存储内存地址的变量,可以用于间接访问其他变量或数据结构。引用是一个已存在变量的别名,通过引用可以直接访问原始变量。

    4. 抽象数据类型:这些类型包括类、接口和模块。类是一种封装了数据和相关操作的用户定义类型,接口定义了一组行为规范,而模块是一组相关功能的集合。

    每种数据类型在编程中都有其特定的用途和限制,开发人员可以根据实际需求选择合适的数据类型来存储和操作数据。

    算法与算法分析 

    算法的特性:

    • 输入: 0个或多个输入
    • 输出: 有一个或者多个输出
    • 确定性: 每步都是确定的,无歧义
    • 有穷性: 算法应该在有穷步后结束
    • 可行性:每一条运算都是能够执行的

    设计算法的要求:

    1. 正确性
    2. 可读性
    3. 健壮性
    4. 高效性(时间代价与空间代价)

     

     

     

     

     

  • 相关阅读:
    腾讯云轻量4核8G12M带宽服务器租用价格和S5实例报价
    vscode两个项目环境不一致怎么办
    Spring IOC 容器:掌握 Spring 的核心技术
    音视频开发29 FFmpeg 音频编码- 流程以及重要API,该章节使用AAC编码说明
    Baklib经验分享 | 一些搭建帮助中心的攻略
    为DuiLib的Edit控件增加PlaceHolderText
    Ubuntu 22.04 中的 .NET 6
    【自动化基础】allure描述用例详细讲解及实战
    使用 Sa-Token 解决 WebSocket 握手身份认证
    目标检测 YOLOv5 - 模型推理预处理 letterbox
  • 原文地址:https://blog.csdn.net/Z_CH8648/article/details/132765252