更新README文档,添加GitHub链接和完善项目结构描述
This commit is contained in:
@@ -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
@@ -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("当前数组: ");
|
||||
|
||||
Reference in New Issue
Block a user