数据结构简介

自从计算机发明以来,人们一直使用术语“数据”来指代传输或存储的计算机信息。但是,订单类型中也存在数据。数据可以是写在纸上的数字或文本,可以以位和字节的形式存储在电子设备的内存中,也可以是存储在人的头脑中的事实。随着世界开始现代化,这些数据成为每个人日常生活的重要方面,各种实现方式使他们能够以不同的方式存储这些数据。

数据是事实和数字的集合或一组值或特定格式的值,指的是一组项目值。然后,数据项被分类为子项,子项是不被称为项的简单主要形式的项组。

让我们考虑一个示例,其中员工姓名可以分为三个子项:名字、中间和姓氏。但是,分配给员工的 ID 通常会被视为单个项目。

数据项的表示

图 1:数据项的表示

在上面提到的例子中,诸如ID、年龄、性别、名字、中间名、姓氏、街道、地点等项目是基本数据项。相反,名称和地址是组数据项。

什么是数据结构?

数据结构是计算机科学的一个分支。数据结构的研究使我们能够了解数据的组织和数据流的管理,以提高任何流程或程序的效率。数据结构是在计算机内存中存储和组织数据的一种特殊方式,以便将来需要时可以轻松检索和有效利用这些数据。数据可以通过多种方式进行管理,例如特定数据组织的逻辑或数学模型称为数据结构。

特定数据模型的范围取决于两个因素:

  1. 首先,它必须被足够地加载到结构中以反映数据与现实世界对象的明确相关性。
  2. 其次,形成应该非常简单,以便在必要时能够有效地处理数据。

数据结构的一些例子有数组、链表、堆栈、队列、树等。数据结构广泛应用于计算机科学的几乎各个方面,即编译器设计、操作系统、图形、人工智能等等。

数据结构是许多计算机科学算法的主要部分,因为它们允许程序员以有效的方式管理数据。它在提高程序或软件的性能方面发挥着至关重要的作用,因为软件的主要目标是尽快存储和检索用户的数据。

数据结构相关的基本术语

数据结构是任何软件或程序的构建块。对于程序员来说,为程序选择合适的数据结构是一项极具挑战性的任务。

以下是涉及数据结构时使用的一些基本术语:

  1. 数据:我们可以将数据定义为基本值或值的集合。例如,员工的姓名和ID是与员工相关的数据。
  2. 数据项:单个价值单位称为数据项。
  3. 组项:具有从属数据项的数据项称为组项。例如,员工的姓名可以有名字、中间名和姓氏。
  4. 基本项:无法划分为子项的数据项称为基本项。例如,员工的 ID。
  5. 实体和属性:某些对象的类由实体表示。它由不同的属性组成。每个属性都象征着该实体的特定属性。例如,
AttributesIDNameGenderJob Title
Values1234Stacey M. HillFemaleSoftware Developer

具有相似属性的实体形成一个实体集。实体集的每个属性都有一个值范围,即可以分配给特定属性的所有可能值的集合。

术语“信息”有时用于具有有意义的或经过处理的数据的给定属性的数据。

  1. 字段:象征实体属性的单个基本信息单元称为字段。
  2. 记录:不同数据项的集合称为记录。例如,如果我们谈论员工实体,则可以将其姓名、ID、地址和职位分组以形成员工的记录。
  3. 文件:一种实体类型的不同记录的集合称为文件。例如,如果有 100 名员工,则相关文件中将有 25 条记录,其中包含每个员工的数据。

了解数据结构的需求

随着应用程序变得越来越复杂,数据量每天都在增加,这可能会导致数据搜索、处理速度、多个请求处理等问题。数据结构支持不同的方法来有效地组织、管理和存储数据。借助数据结构,我们可以轻松地遍历数据项。数据结构提供效率、可重用性和抽象性。

我们为什么要学习数据结构?

  1. 数据结构和算法是计算机科学的两个关键方面。
  2. 数据结构使我们能够组织和存储数据,而算法使我们能够有意义地处理数据。
  3. 学习数据结构和算法将帮助我们成为更好的程序员。
  4. 我们将能够编写更有效、更可靠的代码。
  5. 我们也将能够更快、更有效地解决问题。

理解数据结构的目标

数据结构满足两个互补的目标:

  1. 正确性:数据结构旨在根据感兴趣的领域正确操作各种输入。换句话说,正确性构成了数据结构的首要目标,这始终取决于数据结构要解决的问题。
  2. 效率:数据结构也需要高效。它应该快速处理数据,而无需占用大量计算机资源(例如内存空间)。在实时状态下,数据结构的效率是决定流程成败的关键因素。

了解数据结构的一些关键特征

数据结构的一些重要特征是:

  1. 鲁棒性:一般来说,所有计算机程序员的目标是开发能够为每种可能的输入产生正确输出的软件,并在所有硬件平台上高效执行。这种类型的强大软件必须管理有效和无效的输入。
  2. 适应性:构建网络浏览器、文字处理器和互联网搜索引擎等软件应用程序包括庞大的软件系统,需要多年正确且高效的工作或执行。此外,软件由于新兴技术或不断变化的市场条件而不断发展。
  3. 可重用性:可重用性和适应性等功能是齐头并进的。众所周知,程序员需要大量资源来构建任何软件,这使其成为一项成本高昂的企业。然而,如果软件以可重用和适应性强的方式开发,那么它可以应用于大多数未来的应用程序。因此,通过执行高质量的数据结构,可以构建可重用的软件,这看起来既经济又省时。

数据结构的分类

数据结构提供一组以各种方式相互关联的结构化变量。它构成了编程工具的基础,表示数据元素之间的关系,并允许程序员有效地处理数据。

我们可以将数据结构分为两类:

  1. 原始数据结构
  2. 非原始数据结构

下图展示了数据结构的不同分类。

数据结构的分类

图2:数据结构的分类

原始数据结构

  1. 原始数据结构是由内置于程序中的数字和字符组成的数据结构。
  2. 这些数据结构可以直接由机器级指令操纵或操作。
  3. Integer、Float、CharacterBoolean等基本数据类型属于原始数据结构。
  4. 这些数据类型也称为简单数据类型,因为它们包含无法进一步分割的字符

非原始数据结构

  1. 非原始数据结构是从原始数据结构派生的数据结构。
  2. 这些数据结构不能直接由机器级指令操纵或操作。
  3. 这些数据结构的重点是形成一组构(相同数据类型)或异构(不同数据类型)的数据元素。
  4. 根据数据的结构和排列,我们可以将这些数据结构分为两个子类 -
    1. 线性数据结构
    2. 非线性数据结构

线性数据结构

保留其数据元素之间的线性连接的数据结构称为线性数据结构。数据的排列是线性完成的,其中每个元素由后继和前驱组成,除了第一个和最后一个数据元素。然而,在内存的情况下却不一定如此,因为排列可能不是顺序的。

根据内存分配,线性数据结构进一步分为两类:

  1. 静态数据结构:具有固定大小的数据结构称为静态数据结构。这些数据结构的内存是在编译时分配的,编译后用户不能更改它们的大小;但是,其中存储的数据可以更改。
    数组是静态数据结构的最佳示例,因为它们具有固定大小,并且其数据可以稍后修改
  2. 动态数据结构:具有动态大小的数据结构被称为动态数据结构。这些数据结构的内存是在运行时分配的,它们的大小在代码运行时会发生变化。此外,用户可以在代码运行时更改这些数据结构中存储的大小以及数据元素。
    链表、堆栈队列是动态数据结构的常见示例

线性数据结构的类型

以下是我们通常使用的线性数据结构列表:

1. 数组

数组是一种数据结构用于将相同数据类型的多个数据元素收集到一个变量中。我们可以将所有相同数据类型的值存储到一个变量中,而不是将它们存储在单独的变量名中。这一声明并不意味着我们必须将任何程序中相同数据类型的所有值统一到该数据类型的一个数组中。但有时,相同数据类型的某些特定变量都以适合数组的方式相互关联。

数组是元素列表,其中每个元素在列表中都有唯一的位置。数组的数据元素共享相同的变量名;然而,每个都带有不同的索引号,称为下标。我们可以借助列表中的位置来访问列表中的任何数据元素。因此,要理解的数组的关键特征是数据存储在连续的内存位置中,使用户可以使用各自的索引遍历数组的数据元素。

数据结构数组

图 3.数组

数组可以分为不同的类型:

  1. 一维数组:只有一行数据元素的数组称为一维数组。它存储在升序存储位置。
  2. 二维数组:由多行和多列数据元素组成的数组称为二维数组。它也称为矩阵。
  3. 多维数组:我们可以将多维数组定义为数组的数组。多维数组不受两个索引或二维的限制,因为它们可以根据需要包含尽可能多的索引。

数组的一些应用:

  1. 我们可以存储属于同一数据类型的数据元素列表。
  2. 数组充当其他数据结构的辅助存储。
  3. 该数组还有助于存储固定计数的二叉树的数据元素。
  4. 数组还充当矩阵的存储。

2. 链表

链接列表是用于动态存储数据元素集合的线性数据结构的另一个示例。该数据结构中的数据元素由节点表示,使用链接或指针连接。每个节点包含两个字段,信息字段由实际数据组成,指针字段由链表中后续节点的地址组成。链表最后一个节点的指针由空指针组成,因为它指向任何东西。与数组不同,用户可以根据需要动态调整链表的大小。

数据结构链接列表

图 4.链接列表

链表可以分为不同的类型:

  1. 单链表:单链表是最常见的链表类型。每个节点都有数据和一个包含下一个节点地址的指针字段。
  2. 双向链表:双向链表由一个信息字段和两个指针字段组成。信息字段包含数据。第一个指针字段包含前一个节点的地址,而另一个指针字段包含对下一个节点的引用。因此,我们可以朝两个方向前进(向后和向前)。
  3. 循环链表:循环链表与单链表类似。唯一的关键区别是最后一个节点包含第一个节点的地址,在循环链表中形成循环。

链表的一些应用:

  1. 链表帮助我们实现堆栈、队列、二叉树和预定义大小的图。
  2. 我们还可以实现操作系统的动态内存管理功能。
  3. 链接列表还允许数学运算的多项式实现。
  4. 我们可以使用循环链表来实现操作系统或应用程序功能,循环执行任务。
  5. 循环链接列表在幻灯片放映中也很有用,因为用户需要在显示最后一张幻灯片后返回到第一张幻灯片。
  6. 双向链表用于在浏览器中实现前进和后退按钮,以在网站打开的页面中前进和后退。

3. 堆栈

堆栈是一种线性数据结构,遵循LIFO(后进先出)原则,允许从堆栈的一端(即顶部)进行插入和删除等操作堆栈可以借助连续内存(数组)和非连续内存(链表)来实现。现实生活中的堆栈示例有成堆的书、一副纸牌、成堆的钱等等。

数据结构堆栈的实际示例

图 5.堆栈的实际示例

上图代表了堆栈的现实示例,其中操作仅从一端执行,例如从堆栈顶部插入和删除新书。这意味着栈中的插入和删除只能从栈顶进行。在任何给定时间我们只能访问堆栈的顶部。

Stack中的主要操作如下:

  1. Push:向栈中插入新元素的操作称为入栈操作。
  2. Pop:从Stack中移除或删除元素的操作称为Pop操作。

数据结构堆栈

图 6.堆栈

堆栈的一些应用:

  1. 堆栈用作递归操作的临时存储结构。
  2. 堆栈还用作函数调用、嵌套操作和延迟/推迟函数的辅助存储结构。
  3. 我们可以使用堆栈来管理函数调用。
  4. 堆栈还用于计算不同编程语言中的算术表达式。
  5. 堆栈对于将中缀表达式转换为后缀表达式也很有帮助。
  6. 堆栈允许我们在编程环境中检查表达式的语法。
  7. 我们可以使用堆栈来匹配括号。
  8. 堆栈可用于反转字符串。
  9. 堆栈有助于解决基于回溯的问题。
  10. 我们可以在图和树遍历中使用堆栈进行深度优先搜索。
  11. 堆栈也用于操作系统功能。
  12. 堆栈还用于编辑中的 UNDO 和 REDO 功能。

4. 队列

队列是一种类似于堆栈的线性数据结构,对元素的插入和删除有一些限制在队列中插入元素是在一端完成的,而删除元素是在另一端或相反的一端完成的。因此,我们可以得出结论,队列数据结构遵循 FIFO(先进先出)原则来操作数据元素。队列的实现可以使用数组、链表或堆栈来完成。现实生活中队列的一些例子包括售票柜台、自动扶梯、洗车场等处的排队。

数据结构队列的实际示例

图 7.队列的实际示例

上图是电影售票柜台的真实插图,可以帮助我们了解先到的顾客总是先得到服务的队列。最后到达的顾客无疑将最后得到服务。Queue 的两端都是开放的,可以执行不同的操作。另一个例子是美食广场排队,顾客从后端插入,而在提供他们要求的服务后,顾客从前端移走。

以下是队列的主要操作:

  1. 入队:向队列中插入或添加一些数据元素称为入队。元素插入始终是在后指针的帮助下完成的。
  2. 出队:从队列中删除或移除数据元素称为出队。元素的删除始终是在前指针的帮助下完成的。

数据结构队列

图 8.队列

队列的一些应用:

  1. 队列一般用于Graph中的广度搜索操作。
  2. 队列还用于操作系统的作业调度程序操作,例如键盘缓冲区队列用于存储用户按下的按键,打印缓冲区队列用于存储打印机打印的文档。
  3. 队列负责CPU调度、作业调度和磁盘调度。
  4. 优先级队列用于浏览器中的文件下载操作。
  5. 队列还用于在外围设备和CPU之间传输数据。
  6. 队列还负责处理 CPU 用户应用程序生成的中断。

非线性数据结构

非线性数据结构是数据元素不按顺序排列的数据结构。这里,数据的插入和删除以线性方式是不可行的。各个数据项之间存在层次关系。

非线性数据结构的类型

以下是我们通常使用的非线性数据结构列表:

1. 树

树是一种非线性数据结构和包含节点集合的层次结构,树的每个节点都存储一个值和对其他节点(“子节点”)的引用列表。

树数据结构是一种在计算机中排列和收集数据以便更有效地利用的专门方法。它包含中心节点、结构节点和通过边连接的子节点。我们也可以说树数据结构是由根、枝、叶相连组成的。

数据结构一棵树

图 9.

树可以分为不同的类型:

  1. 二叉树:每个父节点最多可以有两个子节点的树数据结构称为二叉树。
  2. 二叉搜索树:二叉搜索树是一种树数据结构,我们可以在其中轻松维护数字的排序列表。
  3. AVL 树: AVL 树是一种自平衡二叉搜索树,其中每个节点都维护称为平衡因子的额外信息,其值为 -1、0 或 +1。
  4. B 树: B 树是一种特殊类型的自平衡二叉搜索树,其中每个节点由多个键组成,并且可以有两个以上的子节点。

树的一些应用:

  1. 树在计算机系统中实现层次结构,例如目录和文件系统。
  2. 树还用于实现网站的导航结构。
  3. 我们可以使用树生成类似霍夫曼代码的代码。
  4. 树对于游戏应用程序中的决策也很有帮助。
  5. 树负责实现基于优先级的操作系统调度功能的优先级队列。
  6. 树还负责在不同编程语言的编译器中解析表达式和语句。
  7. 我们可以使用树来存储数据键,以便为数据库管理系统(DBMS)建立索引。
  8. 生成树使我们能够在计算机和通信网络中路由决策。
  9. 树还用于人工智能 (AI)、机器人和视频游戏应用中实现的路径查找算法。

2.图表

图是非线性数据结构的另一个示例,包含有限数量的节点或顶点以及连接它们的边。这些图用于解决现实世界的问题,其中它将问题区域表示为网络,例如社交网络、电路网络和电话网络。例如,图的节点或顶点可以代表电话网络中的单个用户,而边代表它们之间通过电话的链接。

图数据结构 G 被认为是由一组顶点 V 和一组边 E 组成的数学结构,如下所示:

G = (V,E)

数据结构图表

图 10.图表

上图表示具有七个顶点 A、B、C、D、E、F、G 和十条边 [A, B]、[A, C]、[B, C]、[B, D]、[B, E]、[C, D]、[D, E]、[D, F]、[E, F] 和 [E, G] 的 Graph。

根据顶点和边的位置,图可以分为不同类型:

  1. 空图:具有空边集的图称为空图。
  2. 平凡图:只有一个顶点的图称为平凡图。
  3. 简单图:既没有自环也没有多重边的图称为简单图。
  4. 多重图:如果一个图由多条边组成但没有自环,则该图被称为多重图。
  5. 伪图:具有自环和多条边的图称为伪图。
  6. 无向图:由无向边组成的图称为无向图。
  7. 有向图:由顶点之间的有向边组成的图称为有向图。
  8. 连通图:每对顶点之间至少有一条路径的图称为连通图。
  9. 断开图:至少一对顶点之间不存在任何路径的图称为断开图。
  10. 正则图:所有顶点具有相同度数的图称为正则图。
  11. 完全图:所有顶点在每对顶点之间都有边的图称为完全图。
  12. 循环图:如果图至少具有三个形成循环的顶点和边,则该图被称为循环图。
  13. 循环图:当且仅当至少存在一个循环时,图才被称为循环图。
  14. 非循环图:具有零循环的图被称为非循环图。
  15. 有限图:具有有限数量的顶点和边的图称为有限图。
  16. 无限图:具有无限个顶点和边的图称为无限图。
  17. 二部图:顶点可以分为独立的集合 A 和 B,并且集合 A 中的所有顶点只能通过某些边连接到集合 B 中存在的顶点的图称为二部图。
  18. 平面图:如果我们可以在两个边相互交叉的单个平面上绘制图,则该图被称为平面图。
  19. 欧拉图:当且仅当所有顶点都是偶数时,图才被称为欧拉图。
  20. 哈密​​顿图:由哈密顿回路组成的连通图称为哈密顿图。

图的一些应用:

  1. 图表帮助我们表示交通、旅行和通信应用中的路线和网络。
  2. 图表用于显示 GPS 中的路线。
  3. 图表还帮助我们表示社交网络和其他基于网络的应用程序中的互连。
  4. 图形用于地图绘制应用程序。
  5. 图表负责表示电子商务应用程序中的用户偏好。
  6. 图表还用于公共设施网络中,以识别当地或市政公司面临的问题。
  7. 图表还有助于管理组织中资源的利用率和可用性。
  8. 图表还用于制作网站的文档链接图,以便通过超链接显示页面之间的连接性。
  9. 图还用于机器人运动和神经网络。

数据结构的基本操作

在下一节中,我们将讨论可以执行的不同类型的操作来操作每个数据结构中的数据:

  1. 遍历:遍历数据结构意味着仅访问每个数据元素一次,以便对其进行管理。例如,打印某个部门所有员工的姓名时需要进行遍历。
  2. 搜索:搜索是另一种数据结构操作,意味着找到一个或多个满足一定约束的数据元素的位置。这样的数据元素可以存在于给定的数据元素集合中,也可以不存在。例如,我们可以使用搜索操作来查找所有具有5年以上工作经验的员工的姓名。
  3. 插入:插入是指向集合中插入或添加新的数据元素。例如,我们可以使用插入操作来添加公司最近雇用的新员工的详细信息。
  4. 删除:删除是指从给定的数据元素列表中移除或删除特定的数据元素。例如,我们可以使用删除操作来删除已离职员工的姓名。
  5. 排序:排序是指根据应用程序的类型按升序或降序排列数据元素。例如,我们可以使用排序操作将某个部门的员工姓名按字母顺序排列,或者通过将员工的绩效降序排列并提取前三名的详细信息来估计当月绩效排名前三的员工。
  6. 合并:合并意味着将两个已排序列表的数据元素组合起来,以形成单个已排序数据元素列表。
  7. 创建:创建是一种用于为程序的数据元素保留内存的操作。我们可以使用声明语句来执行此操作。数据结构的创建可以在以下过程中进行:
    1. 编译时
    2. 运行时
      例如,C 语言中使用malloc()函数来创建数据结构。
  8. 选择:选择是指从可用数据中选择特定数据。我们可以通过指定循环内的条件来选择任何特定数据。
  9. 更新:更新操作允许我们更新或修改数据结构中的数据。我们还可以通过在循环内指定一些条件来更新任何特定数据,例如选择操作。
  10. 拆分:拆分操作允许我们将数据划分为各个子部分,从而减少整个过程的完成时间。

理解抽象数据类型

根据美国国家标准与技术研究所 (NIST) 的规定,数据结构是信息的排列,通常位于内存中,以提高算法效率。数据结构包括链表、栈、队列、树和字典。它们也可以是一个理论实体,就像一个人的姓名和地址。

从上面的定义我们可以得出数据结构中的操作包括:

  1. 高级抽象,例如从列表中添加或删除项目。
  2. 搜索和排序列表中的项目。
  3. 访问列表中优先级最高的项目。

每当数据结构执行此类操作时,它就被称为抽象数据类型(ADT)

我们可以将其定义为一组数据元素以及对数据的操作。术语“抽象”是指数据及其上定义的基本操作正在独立于其实现进行研究。它包括我们可以用数据做什么,而不是我们如何做。

ADI 实现包含一个存储结构,用于存储基本操作的数据元素和算法。所有的数据结构,如数组、链表、队列、堆栈等,都是ADT的例子。

了解使用 ADT 的优势

在现实世界中,程序由于新的约束或要求而不断发展,因此修改程序通常需要更改一个或多个数据结构。例如,假设我们想要在员工记录中插入一个新字段以跟踪每个员工的更多详细信息。在这种情况下,我们可以通过用 Linked 结构代替 Array 来提高程序的效率。在这种情况下,重写利用修改后的结构的每个过程是不合适的。因此,更好的选择是将数据结构与其实现信息分开。这是抽象数据类型(ADT)的使用原理。

数据结构的一些应用

以下是数据结构的一些应用:

  1. 数据结构有助于组织计算机内存中的数据。
  2. 数据结构还有助于表示数据库中的信息。
  3. 数据结构允许实现算法来搜索数据(例如,搜索引擎)。
  4. 我们可以使用数据结构来实现操作数据的算法(例如,文字处理器)。
  5. 我们还可以使用数据结构(例如数据挖掘器)来实现算法来分析数据。
  6. 数据结构支持生成数据的算法(例如,随机数生成器)。
  7. 数据结构还支持压缩和解压缩数据的算法(例如,zip 实用程序)。
  8. 我们还可以使用数据结构来实现加密和解密数据的算法(例如,安全系统)。
  9. 在数据结构的帮助下,我们可以构建可以管理文件和目录的软件(例如文件管理器)。
  10. 我们还可以开发可以使用数据结构渲染图形的软件。(例如,网络浏览器或 3D 渲染软件)。

除此之外,如前所述,数据结构还有许多其他应用程序可以帮助我们构建任何所需的软件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当涉及到教学计划安排数据结构时,以下是一种可能的安排方式: 1. 简介和基础知识:介绍数据结构的定义、重要性和应用领域。讲解基本术语和概念,例如数组、链表、栈、队列、树和图等。 2. 线性数据结构:讲解数组、链表、栈和队列的原理、特点和操作。强调它们的适用场景和性能分析。 3. 非线性数据结构:学习树和图的基本概念,包括二叉树、二叉搜索树、堆等。介绍它们的特性、遍历方法和常见应用。 4. 排序和搜索算法:深入研究常见的排序算法,如冒泡排序、插入排序、选择排序、快速排序和归并排序。了解它们的原理、复杂度分析和实际应用。 5. 散列与哈希表:介绍散列函数和哈希表的工作原理,以及解决冲突的方法。 6. 综合应用:讨论如何使用数据结构解决实际问题,例如图算法、字符串匹配、模拟等。 7. 算法复杂度分析:学习如何分析算法的时间复杂度和空间复杂度,并了解最坏情况、平均情况和最优情况下的性能分析。 8. 数据结构的高级主题:介绍一些高级的数据结构,如平衡二叉树、B树、红黑树等。讨论它们的优势和应用场景。 9. 实践项目:通过编写实际的程序项目,巩固所学的数据结构和算法知识。 上述安排仅供参考,可以根据实际教学需求和学生水平进行调整和扩展。同时,鼓励学生进行自主学习和实践,通过解决实际问题来加深对数据结构的理解和应用能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值