问题遇到的现象和发生背景
按顺序来看明明是不一样的字符串,他却匹配成功了 不知道为什么,能否有人给看看怎么回事?
用代码块功能插入代码,请勿粘贴截图
我的解答思路和尝试过的方法
我先创建好一个结点,然后用它的name去和根节点的name比较 然后根据情况进行插入,但是不知道为什么匹配总出错
我想要达到的结果
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max 31
typedef struct TNode *tree;
struct TNode
{
char name[max];
int data;
tree left;
tree right;
};
int bs(char*s,char *str)
{
return (strcmp(s,str));
}
tree buildTree(char *str)
{
tree t=(tree)malloc(sizeof(struct TNode));
t->left=NULL;
t->right=NULL;strcpy(t->name,str);
t->data=1;
return t;
}
void Print(tree t,int n)
{
if(t==NULL)
{
return;
}
Print(t->left,n);
printf("%s %.4lf%\n",t->name,100*t->data/n);
Print(t->right,n);
}
tree insertTree(tree t,tree t0)
{
if(strcmp(t->name,t0->name)==0)
{
t->data++;
}else
{
int p=bs(t->name,t0->name);
if(p>0)
{
if(t->left!=NULL)
{
insertTree(t->left,t0);
}else
{
t->left=t0;
}
}else
{
if(t->right!=NULL)
{
insertTree(t->right,t0);
}else
{
t->right=t0;
}
}
}
return t;
}
int main()
{
int n;scanf("%d",&n);getchar();
char str[max];scanf("%s",str);getchar();
tree s=(tree)malloc(sizeof(struct TNode));
tree t=buildTree(str);
while(n>1)
{
scanf("%s",s->name);getchar();
s->left=NULL;s->right=NULL;s->data=1;
insertTree(t,s);
n--;
}
Print(t,n);
}