当前位置: 首页> 教育> 高考 > C语言常用的数据结构

C语言常用的数据结构

时间:2025/7/11 9:36:38来源:https://blog.csdn.net/Fearlessness/article/details/141184069 浏览次数:0次

C语言常用的数据结构

1. 数组(Array)

一组固定大小的连续存储的元素,所有元素类型相同,可以通过索引访问。

特点:快速读取、固定大小;

使用场景:用于需要频繁访问元素的场景,例如,查表等。

int arr[5] = {0, 1, 2, 3, 4};
printf("%d", arr[2]);

2. 链表(Linked List)

一系列节点组成的线型结构,每个节点包含数据和一个指向下一个节点的指针。

特点:动态大小,方便插入和删除操作。

使用场景:需要频繁插入/删除元素的场景,例如队列、栈的实现。

struct Node{int data;struct Node* next;
};
struct Node* head = NULL;	// 初始化链表头指针

3. 栈(Stack)

一种后进先出(LIFO,Last In First Out)的数据结构。

特点:只允许一端进行插入和删除操作,即栈顶。

使用场景:用于实现递归、表达式求值、括号匹配等。

#include <stdio.h>
#define MAX 100
int stack[MAX];
int top = -1;void push(int value){if(top < MAX -1){stack[++top] = value;}
}int pop(){if(top >= 0 ){teturn stack[top--];}return -1;	// 栈空
}

4. 队列(Queue)

一种先进先出(FIFO,First In First Out)的数据结构。

特点:元素从一端进入,从另一端离开。

使用场景:用于任务调度、缓存等。

#define MAX 100
int queue[MAX];
void enqueue(int value){if(rear < MAX){queue[rear++] = value;}
}int dequeue(){if(front < rear){return queue[front++];}return -1;		// 队列为空
}

5. 二叉树(Binary Tree)

每个节点最多有两个子节点的树结构,分别称为左子节点和右字节点。

特点:结构灵活,时和多种操作,如查找、插入、删除。

使用场景:用于实现二叉树、堆、表达式树等。

struct TreeNode{int data;struct TreeNode* left;struct TreeNode* right;
};struct TreeNode* root = NULL; // 初始化二叉树根节点

6. 哈希表(Hash Table)

通过哈希函数将键值映射到数组中的位置,以实现快速查找。

特点:平均情况下,插入、删除和查找操作的时间复杂度为O(1)。

使用场景:用于快速查找,如数据库索引、缓存实现。

#define SIZE 100int hashTable[SIZE];int hashFunction(int key){return key % SIZE;
}void insert(int key){int index = hashFunction(key);hashTable[index] = key;
}

7. 图(graph)

由一组顶点和这些顶点之间的边组成的结构,可以是有向或无向的。

特点:适合表示多对多关系,入社交网络、道路网络。

使用场景:用于路径查找、网络流、最短路径等。

#define V 5int graph[V][V] = {{0, 1, 0, 0, 1},{1, 0, 1, 0, 1},{0, 1, 0, 1, 0},{0, 0, 1, 0, 1},{1, 1, 0, 1, 0}
};

8. 堆 (Heap)

  • 简介: 一种特殊的二叉树,满足堆性质:最大堆中每个节点都大于等于其子节点,最小堆中每个节点都小于等于其子节点。
  • 特点: 适合实现优先队列,支持高效的最大/最小值获取。
  • 使用场景: 用于排序(堆排序)、优先队列实现等。
void heapify(int arr[], int n, int i) {int largest = i;int left = 2 * i + 1;int right = 2 * i + 2;if (left < n && arr[left] > arr[largest])largest = left;if (right < n && arr[right] > arr[largest])largest = right;if (largest != i) {int temp = arr[i];arr[i] = arr[largest];arr[largest] = temp;heapify(arr, n, largest);}
}

9. 集合 (Set)

  • 简介: 一种无序且不重复的元素集合。
  • 特点: 主要用于判断元素是否存在、集合操作(并集、交集、差集)。
  • 使用场景: 用于集合操作、去重、快速查找元素。
#include <stdio.h>
#include <stdbool.h>bool set[1000] = {false};void insert(int value) {set[value] = true;
}bool contains(int value) {return set[value];
}
关键字:C语言常用的数据结构

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: