能否提供两个经典的编程数据结构实现示例,分别展示其基本操作和用法?再来两个进阶点的操作与用法的代码示例并展示应用场景
时间: 2024-12-13 07:21:49 浏览: 5
当然,这里我会介绍两个常见的编程数据结构及其操作,分别是数组(Array)和链表(Linked List)。它们都是基础的数据结构,然后还会提供两个进阶的数据结构示例,一个是哈希表(Hash Table),用于快速查找,另一个是二叉搜索树(Binary Search Tree,BST)。
### 1. 数组 (Array)
**基本操作:**
- 基本初始化:`int array[5] = {1, 2, 3, 4, 5};`
- 访问元素:`array[0]` 返回第一个元素(索引从0开始)
- 插入/删除:数组一旦分配,通常不支持动态插入或删除,但可以通过移动元素实现简单的修改。
**应用场景:**
- 存储固定大小的数据集合,如内存缓存或小规模的数据排序。
### 2. 链表 (LinkedList)
**基本操作:**
- 创建节点:`struct Node* newNode(int data) { struct Node* node = new Node(); node->data = data; node->next = NULL; return node; }`
- 追加元素:`node->next = newNode(data);`
- 访问元素:使用指针遍历`while (node != NULL) { cout << node->data << " "; node = node->next; }`
**应用场景:**
- 需要频繁插入或删除元素的地方,比如文件系统的目录结构。
### 进阶数据结构示例:
#### 3. 哈希表 (Hash Table - 示例使用 C++ STL 的 unordered_map)
**基本操作:**
```cpp
#include <unordered_map>
// 声明哈希表
std::unordered_map<std::string, int> hash_table;
// 插入元素
hash_table["apple"] = 1;
// 查找元素
int count = hash_table["apple"];
```
**应用场景:**
- 快速查找、存储关联数据,如数据库索引、配置信息等。
#### 4. 二叉搜索树 (Binary Search Tree - BST)
**基本操作:**
```cpp
class TreeNode {
public:
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
TreeNode* insertIntoBST(TreeNode* root, int val) {
if (!root) return new TreeNode(val);
if (val < root->val) root->left = insertIntoBST(root->left, val);
else root->right = insertIntoBST(root->right, val);
return root;
}
```
**应用场景:**
- 排序和搜索算法,例如快速查找某个值的位置或执行范围查询。
阅读全文