原始数据结构和非原始数据结构的区别

2025 年 4 月 10 日 | 阅读 5 分钟

数据结构意味着在内存中组织数据。数据可以通过两种方式组织,即线性或非线性方式。

用于编程目的的数据结构有两种类型

  • 原始数据结构
  • 非原始数据结构

原始数据结构是一种基本的数据结构类型,它只存储一种类型的数据,而非原始数据结构是一种用户定义的数据结构类型,它在一个实体中存储不同类型的数据。

Primitive vs non-primitive data structure

在上图中,我们可以观察到数据结构的分类。数据结构分为两种类型,即原始数据结构和非原始数据结构。对于原始数据结构,它包含基本数据类型,如整数、浮点数、字符、指针,这些基本数据类型可以容纳单一类型的值。例如,整数变量可以容纳整数类型的值,浮点变量可以容纳浮点类型的值,字符变量可以容纳字符类型的值,而指针变量可以容纳指针类型的值。

对于非原始数据结构,它分为两部分,如线性数据结构和非线性数据结构。线性数据结构是一种顺序类型的数据结构,这里的顺序意味着内存中的所有元素都以顺序方式存储;例如,存储在第二个元素之后的元素将是第三个元素,存储在第三个元素之后的元素将是第四个元素,依此类推。我们有不同的线性数据结构,它们按顺序存储值,例如数组链表队列

非线性数据结构是一种随机类型的数据结构。非线性数据结构是树和图。

让我们了解原始数据结构和非原始数据结构之间的区别。

Primitive vs non-primitive data structure
原始数据结构非原始数据结构
原始数据结构是一种只存储一种数据类型的数据结构。非原始数据结构是一种可以存储多种数据类型的数据结构。
原始数据结构的示例有整数、字符、浮点数。非原始数据结构的示例有数组、链表、栈。
原始数据结构将包含一些值,即它不能为 NULL。非原始数据结构可以包含 NULL 值。
大小取决于数据结构的类型。对于非原始数据结构,大小不是固定的。
它以小写字母开头。它以大写字母开头。
原始数据结构可以用于调用方法。非原始数据结构不能用于调用方法。

原始数据结构

原始数据结构是一种可以在特定位置保存单个值的数据结构,而非线性数据结构可以在连续位置或随机位置保存多个值。

原始数据结构的示例有浮点数、字符、整数和指针。原始数据结构的值由程序员提供。以下是四种原始数据结构。

  • 整数: 整数数据类型包含数值。它包含可以是负数或正数的整数。当整数数据类型的范围不够大时,在这种情况下,我们可以使用 long。
  • 浮点数: 浮点数是一种可以容纳小数值的数据类型。当小数值的精度增加时,使用双精度数据类型。
  • 布尔值: 它是一种可以容纳 True 或 False 值的数据类型。它主要用于检查条件。
  • 字符: 它是一种可以容纳单个字符值(包括大写和小写)的数据类型,例如 'A' 或 'a'。

非原始数据结构

非原始数据结构是一种可以在连续或随机位置容纳多个值的数据结构。非原始数据类型由程序员定义。非原始数据结构进一步分为两类,即线性数据结构和非线性数据结构。

对于线性数据结构,数据按顺序存储,即一个数据接一个数据。当我们从线性数据结构中访问数据时,我们只需要从一个地方开始,然后按顺序找到其他数据。

以下是线性数据结构的类型:

  • 数组: 数组是一种可以容纳相同类型元素的数据结构。它不能包含不同类型的元素,例如整数和字符。数组中常用的操作是插入、删除、遍历、搜索。

例如

int a[6] = {1,2,3,4,5,6};

上面的例子是一个数组,它包含以连续方式存储的整数类型元素。

  • 字符串: 字符串定义为字符数组。字符数组和字符串之间的区别在于,字符串数据结构以“NULL”字符终止,它表示为“\0”。

字符串数据结构

在上面的示例中,字符串的长度为 17,因为最后一个字符是表示字符串终止的 NULL 字符。

字符表示

在上面的示例中,字符串的长度为 16,因为它没有 NULL 字符作为最后一个字符来表示终止。

  • 栈: 栈是一种遵循 LIFO(后进先出)原则的数据结构。栈上的所有操作都从栈顶执行,例如 PUSH 和 POP 操作。PUSH 操作是将元素插入栈的过程,而 POP 操作是从栈中移除元素的过程。栈数据结构可以通过使用数组或链表来实现。
  • 队列: 队列是一种可以使用数组实现的数据结构。栈和队列数据结构之间的区别在于,队列中的元素从后端插入,而队列中的元素从前端移除。