📅  最后修改于: 2023-12-03 15:36:48.447000             🧑  作者: Mango
在计算机中,数据结构是指数据元素之间的关系,以及对这些关系的操作。而在编程语言中,数据结构是以一定的形式在内存中存储的。常见的数据结构有数组、链表、树、图等。
数组是一种连续存储的数据结构,其在内存中的表示形式为一块连续的内存空间。数组的每个元素都是相同大小的数据类型,可以用下标来访问数组中的元素。
int arr[5] = {1,2,3,4,5}; // 定义一个长度为 5 的整型数组
printf("%d", arr[2]); // 输出数组下标为 2 的元素,即 3
链表是一种动态存储的数据结构,其在内存中的表示形式为一些不连续的内存空间,每个节点都包含了数据以及指向下一个节点的指针。链表的优点在于可以方便的插入和删除,但访问元素可能会比数组慢。
struct Node {
int data;
struct Node* next;
};
struct Node* head = NULL; // 定义链表头结点
head = malloc(sizeof(struct Node)); // 分配头结点内存空间
head->data = 1; // 给头结点赋值
head->next = NULL; // 头结点的下一个节点指针为空
树是一种层次结构的数据结构,其在内存中的表示形式类似于链表,每个节点都包含了数据以及指向子节点的指针。树可以用于组织数据、搜索以及排序等。
struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
};
struct TreeNode* root = NULL; // 定义树根节点
root = malloc(sizeof(struct TreeNode)); // 分配根节点内存空间
root->val = 1; // 给根节点赋值
root->left = NULL; // 左子节点为空
root->right = NULL; // 右子节点为空
图是一种由节点和边组成的数据结构,其在内存中的表示形式可以用邻接矩阵或邻接表来表示。图可以用于表达网络、关系等概念。
int graph[4][4] = {{0,1,0,0},
{1,0,1,0},
{0,1,0,1},
{0,0,1,0}}; // 定义一个无向图的邻接矩阵
以上是常见数据结构在内存中的表示形式。使用适当的数据结构可以提高程序的效率以及降低工作难度。