| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 834 人关注过本帖
标题:一个二叉树的简单应用,运行结果不对,求各位大侠帮帮忙呀。。。不盛感激
取消只看楼主 加入收藏
zcs302567601
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2009-9-21
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:2 
一个二叉树的简单应用,运行结果不对,求各位大侠帮帮忙呀。。。不盛感激
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef int Keytype;//
typedef struct node
{ Keytype score;//成绩设为关键字
    char name[10];//学生成绩
    char xuenum[12];//学号
    struct node *lchild,*rchild;
    }Stunode;
typedef Stunode * Stutree;
inserttree(Stutree *T,Stunode *S)//插入树的结点
{Stunode *p,*f=*T;
    while(!p){
        f=p;
        p=((S->score)<=(p->score))?p->lchild:p->rchild;
    }
    p=(Stunode *)malloc(sizeof(Stunode));
    strcpy(p->name,S->name);
    strcpy(p->xuenum,S->xuenum);
    p->score=S->score;   
    p->lchild=NULL;
    p->rchild=NULL;
    if(*T==NULL)*T=p;
    else
    if(S->score<=f->score)f->lchild=p;
    else f->rchild=p;     
}
Stutree creatree()//建立二叉排序树
{  Stutree T=NULL;   
    Stunode *Stuinfo;
    char flag;
    flag='y';
    printf("输入学生信息:\n");
    printf("学生姓名 学号 学习成绩  \n");   
    while(flag=='y'||flag=='Y')
    {
    Stuinfo=(Stunode *)malloc(sizeof(Stunode));
    scanf("%s,%s,%d",Stuinfo->name,Stuinfo->xuenum,&Stuinfo->score);
    inserttree(&T,Stuinfo);
    printf("还有吗?y/n\n");
    getchar();
    flag=getchar();
    }
    return T;
    }
void Inorder(Stutree root)//中序遍历
{
    if(root!=NULL)
    {
    Inorder(root->lchild);
    printf("%s,%s,%d\n",root->name,root->xuenum,root->score);
    Inorder(root->rchild);
}
}
Stunode *searchtree(Stutree T,Keytype Stuscore)//查找学生信息
 {  if(T==NULL||Stuscore==T->score)
     return T;
   if(Stuscore<=T->score)
    return searchtree(T->lchild,Stuscore);
   if(Stuscore>T->score)
    return searchtree(T->rchild,Stuscore);
   }

main()
{
  Stutree root;
  int Stuscore;
  Stunode *student;
 printf("生成二叉树:\n");
     root=creatree();
 printf("中序遍历输出结果:\n");
 printf("学生姓名 学号 学习成绩:\n");
   Inorder(root);
 printf("输入你要查找的学生成绩:");
   scanf("%d",&Stuscore);
 printf("\n");
 student=searchtree(root,Stuscore);
 if(!student)
 printf("没有查到成绩为%d的学生",Stuscore);
 else{
     printf("成绩为%d的学生信息:\n",Stuscore);
    printf("%s,%s,%d\n",student->name,student->xuenum,student->score);  
   }
}
搜索更多相关主题的帖子: 二叉树 应用 结果 感激 
2009-11-22 07:44
zcs302567601
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2009-9-21
收藏
得分:0 
回复 2楼 viky2003
已经把那个改 了,这样对吗?但运行还是不对呀。。。
Stunode *f,*p=*T;
    while(p){
        f=p;
        p=((S->score)<=(p->score))?p->lchild:p->rchild;
    }
2009-11-22 10:56
zcs302567601
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2009-9-21
收藏
得分:0 
各位能不能把我的源程序改改呀。。。
2009-11-22 13:45
快速回复:一个二叉树的简单应用,运行结果不对,求各位大侠帮帮忙呀。。。不盛感 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021190 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved