int main() { LinkBiSortTree t = NULL; int n, delete_num, insert_num; printf("请输入数组中元素的个数:"); scanf("%d", &n); int r[n]; printf("请输入数组各个元素:"); for (int i = 0; i < n; i++) { scanf("%d", &r[i]); } CreatBST(&t, r, n); printf("初始的中序遍历为:"); Inorder(t); printf("\n请输入要删除的元素:"); scanf("%d", &delete_num); int del_res = Delete_Node(&t, delete_num); if (del_res == 1) { printf("删除成功!删除的元素为 %d\n", delete_num); } else { printf("删除失败!二叉排序树中没有元素 %d\n", delete_num); } printf("删除元素后的中序遍历为:"); Inorder(t); printf("\n请输入要插入的元素:"); scanf("%d", &insert_num); int insert_res = Insert_Node(&t, insert_num); if (insert_res == 1) { printf("插入成功!插入的元素为 %d\n", insert_num); } else { printf("插入失败!二叉排序树中已存在元素 %d\n", insert_num); } printf("插入元素后的中序遍历为:"); Inorder(t); return 0; }修改该代码的错误
时间: 2024-01-16 09:04:11 浏览: 70
在该代码中,我们需要注意以下几点:
1. 数组r的长度不能是变量n,因为C语言中的数组长度必须是常量表达式。
2. 在使用scanf函数输入数据时,需要确保输入数据的类型与变量类型相同,否则会导致程序出错。
3. 在调用CreatBST函数时,需要传入指向t的指针的指针,而不是t本身。
4. 在调用Inorder函数时,需要传入指向t的指针。
5. 在调用Delete_Node和Insert_Node函数时,需要传入指向t的指针的指针,而不是t本身。
修改后的代码如下:
```c
int main() {
LinkBiSortTree t = NULL;
int n, delete_num, insert_num;
printf("请输入数组中元素的个数:");
scanf("%d", &n);
int r[100]; // 假设数组长度不超过100
printf("请输入数组各个元素:");
for (int i = 0; i < n; i++) {
scanf("%d", &r[i]);
}
CreatBST(&t, r, n);
printf("初始的中序遍历为:");
Inorder(&t);
printf("\n请输入要删除的元素:");
scanf("%d", &delete_num);
int del_res = Delete_Node(&t, delete_num);
if (del_res == 1) {
printf("删除成功!删除的元素为 %d\n", delete_num);
}
else {
printf("删除失败!二叉排序树中没有元素 %d\n", delete_num);
}
printf("删除元素后的中序遍历为:");
Inorder(&t);
printf("\n请输入要插入的元素:");
scanf("%d", &insert_num);
int insert_res = Insert_Node(&t, insert_num);
if (insert_res == 1) {
printf("插入成功!插入的元素为 %d\n", insert_num);
}
else {
printf("插入失败!二叉排序树中已存在元素 %d\n", insert_num);
}
printf("插入元素后的中序遍历为:");
Inorder(&t);
return 0;
}
```
阅读全文