如图,在b数中查找元素e,我注释掉的代码为啥不可以?
BTNode* FindNode(BTNode* b, char e)
{
/*BTNode* p = NULL;
if (b == NULL)
return NULL;
if (b->data == e)
{
return b;
}
p = FindNode(b->lchild, e);
p = FindNode(b->rchild, e);
if(p != NULL)
return p;
else
return NULL;*/
BTNode* p = NULL;
if (b == NULL)
{
return NULL;
}
else if (b->data == e)
{
p = FindNode(b->lchild, e);
if (p != NULL)
{
return b;
}
else
{
return FindNode(b->rchild, e);
}
}
}
你不判断左节点到底找到没有,就直接把p赋值成了右节点,那往左边找的代码不是白写了吗
每执行FindNode之后都要判断p呀
这个题比较简单,使用fopen和fgets就能解决,,题目没有要求输出总行数,不然最后还要判断空行
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
char s[100];
FILE *p;
int lines=0;
p=fopen("D:\\11.txt","r");
if(p){
while((fgets(s,100,p))!=NULL){
++lines;
char c1='a';
char c2='b';
int m = strlen(s);
// printf("s长度:%d\n",m);
int i,j;
for(i=0;i<m;i++){
if(s[i]==c1){
for(j=i;j<m;j++){
if(s[j]==c2){
printf("行数:%d,a的位置:%d,b的位置:%d\n",lines,i+1,j+1);
continue;
//break;
}
}
// break;
}
}
}
fclose(p);
}
return 0;
}