1. 数组
数组是C语言中一种基本的数据结构,它用于存储具有相同数据类型的元素集合。数组的大小在定义时确定,且在程序运行过程中不可改变。
int arr[10]; // 定义一个包含10个整数的数组初始化数组:int arr[5] = {1, 2, 3, 4, 5};访问数组元素:arr[index];修改数组元素:arr[index] = value;2. 结构体
结构体是一种用户自定义的数据类型,它允许将不同类型的数据组合在一起。结构体在C语言中用于表示现实世界中的对象和实体。
struct Person { char name[50]; int age;};定义结构体变量:struct Person person1;访问结构体成员:person1.age;修改结构体成员:person1.age = 25;3. 链表
链表是一种动态数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。链表可以灵活地插入和删除元素,且不受固定大小的限制。
struct Node { int data; struct Node *next;};创建链表节点:struct Node *node = (struct Node *)malloc(sizeof(struct Node));插入节点:node->next = current->next; current->next = node;删除节点:current->next = current->next->next;4. 栈
栈是一种后进先出(LIFO)的数据结构,它允许在一端进行插入和删除操作。栈常用于解决括号匹配、逆序输出等问题。
int stack[100];int top = -1;入栈:stack[++top] = value;出栈:int value = stack[top--];判断栈空:top == -15. 队列
队列是一种先进先出(FIFO)的数据结构,它允许在一端进行插入操作,在另一端进行删除操作。队列常用于任务调度、缓冲区管理等场景。
int queue[100];int front = 0;int rear = -1;入队:queue[++rear] = value;出队:int value = queue[front++];判断队空:front > rear6. 树
树是一种分层数据结构,它由节点组成,每个节点包含数据和指向子节点的指针。树常用于表示具有层次关系的数据,如文件系统、组织结构等。
struct TreeNode { int data; struct TreeNode *left; struct TreeNode *right;};创建树节点:struct TreeNode *node = (struct TreeNode *)malloc(sizeof(struct TreeNode));插入节点:node->left = current->left; current->left = node;遍历树: inorder(node->left); printf("%d ", node->data); inorder(node->right);7. 图
图是一种复杂的数据结构,它由节点和边组成,用于表示对象之间的多对多关系。图可以有多种形式,如无向图、有向图、加权图等。
struct Graph { int numVertices; struct AdjList *adjLists;};创建图:struct Graph *graph = (struct Graph *)malloc(sizeof(struct Graph));添加边:addEdge(graph, src, dest);遍历图:DFS(graph, vertex);总结
数据结构是C语言编程中非常重要的一部分,掌握数据结构的高级技巧对于成为一名优秀的C语言程序员至关重要。通过本篇文章,我们了解到了数组、结构体、链表、栈、队列、树和图等数据结构。