这里LEN为A [10]和我是在A [11].有没有办法捕捉这些错误?我尝试使用gcc -Wall -W进行编译,但没有显示任何警告.
int main()
{
int A[10];
int i, len;
len = sizeof(A) / sizeof(0[A]);
printf("Len = %d\n",len);
for(i = 0; i < len; ++i){
A[i] = i*19%7;
}
A[i] = 5;
A[i + 1] = 6;
printf("Len = %d i = %d\n",len,i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出: Len = 10 Len = 5 i = 6
我正在尝试实现二进制搜索树操作并在删除时陷入困境.
11
/ \
10 14
Run Code Online (Sandbox Code Playgroud)
使用inorder遍历作为树的表示最初输出是10 11 14.
删除节点10,输出预期为11 14但我得到0 11 14.
删除节点14,输出预期只有11但我得到0 11 67837.
请解释我输出错误的原因.我不是在找任何代码:).
typedef struct _node{
int data;
struct _node *left;
struct _node *right;
} Node;
Node* bstree_search(Node *root, int key)
{
if(root == NULL){
return root;
}
// Based on binary search relation, key can be found in either left,
// right, or root.
if(key > root->data)
return bstree_search(root->right, key);
else if(key < root->data)
return bstree_search(root->left, key);
else
return root;
}
void bstree_insert(Node **adroot, int …Run Code Online (Sandbox Code Playgroud)