更新README文档,添加GitHub链接和完善项目结构描述

This commit is contained in:
2025-10-09 20:49:27 +08:00
parent 5b7eccf414
commit 91e3438bfb
5 changed files with 679 additions and 158 deletions
+65
View File
@@ -0,0 +1,65 @@
# 数据结构学习代码
本目录包含数据结构相关的C语言实现代码,专注于基础数据结构的学习和实践。
## 📁 文件列表
### 核心实现
- `数组.c` - 数组基础操作实现
- `结构体实现插入元素.c` - 基于结构体的动态数组实现
- 包含插入、删除、查找等基本操作
- 实现了安全的输入验证机制
- 提供交互式命令行界面
### 可执行文件
- `array_operations.exe` - 编译后的数组操作程序
### 记录文件
- `records/` - 程序运行记录和测试数据
## 🎯 学习重点
### 数据结构概念
- **线性表**:数组的基本操作和内存管理
- **动态结构**:结构体封装的数据操作
- **算法实现**:插入、删除、查找的时间复杂度分析
### 编程技巧
- **内存安全**:边界检查和错误处理
- **用户交互**:输入验证和友好的错误提示
- **代码组织**:模块化设计和函数封装
## 🚀 快速开始
### 编译运行
```bash
# 编译数组操作程序
gcc 结构体实现插入元素.c -o array_operations
# 运行程序
./array_operations
```
### 功能特性
- ✅ 动态数组插入操作
- ✅ 元素删除功能
- ✅ 数组查找操作
- ✅ 数组遍历显示
- ✅ 安全输入验证
- ✅ 交互式菜单系统
## 📚 学习建议
1. **理论结合实践**:先理解数据结构的理论概念,再通过代码实现加深理解
2. **逐步深入**:从基础的数组操作开始,逐步学习更复杂的数据结构
3. **注重效率**:关注算法的时间复杂度和空间复杂度
4. **安全编程**:重视边界检查和错误处理的重要性
## 🔗 相关资源
- [GitHub仓库](https://github.com/LHY0125/Learn_C.git)
- 更多C语言学习资源请参考上级目录的翁凯C语言教程
---
> 💡 **提示**:数据结构是编程的基础,掌握好基本的数据结构对后续学习算法和系统设计都非常重要。
Binary file not shown.
+23 -23
View File
@@ -74,17 +74,17 @@ int getInput(const char *prompt, int min, int max)
{
int value;
char buffer[100];
while (1)
{
printf("%s", prompt);
if (fgets(buffer, sizeof(buffer), stdin) != NULL)
{
// 尝试解析整数
char *endptr;
value = strtol(buffer, &endptr, 10);
// 检查是否为有效整数
if (endptr != buffer && (*endptr == '\n' || *endptr == '\0'))
{
@@ -165,15 +165,15 @@ int main(void)
switch (choice)
{
case 1: // 插入元素
{
char prompt[100];
sprintf(prompt, "请输入要插入的位置 (0-%d): ", myArray.size);
position = getInput(prompt, 0, myArray.size);
value = getInput("请输入要插入的值 (-1000到1000): ", -1000, 1000);
insert(&myArray, position, value);
printf("插入操作完成!\n");
}
break;
{
char prompt[100];
sprintf(prompt, "请输入要插入的位置 (0-%d): ", myArray.size);
position = getInput(prompt, 0, myArray.size);
value = getInput("请输入要插入的值 (-1000到1000): ", -1000, 1000);
insert(&myArray, position, value);
printf("插入操作完成!\n");
}
break;
case 2: // 查找元素
value = getInput("请输入要查找的值 (-1000到1000): ", -1000, 1000);
@@ -189,19 +189,19 @@ int main(void)
break;
case 3: // 删除元素
{
if (myArray.size == 0)
{
if (myArray.size == 0)
{
printf("错误:数组为空,无法删除元素!\n");
break;
}
char prompt[100];
sprintf(prompt, "请输入要删除的位置 (0-%d): ", myArray.size - 1);
position = getInput(prompt, 0, myArray.size - 1);
delete(&myArray, position);
printf("删除操作完成!\n");
printf("错误:数组为空,无法删除元素!\n");
break;
}
break;
char prompt[100];
sprintf(prompt, "请输入要删除的位置 (0-%d): ", myArray.size - 1);
position = getInput(prompt, 0, myArray.size - 1);
delete(&myArray, position);
printf("删除操作完成!\n");
}
break;
case 4: // 打印数组
printf("当前数组: ");