C语言程序设计题:做完整的另加悬赏100分)

题目如下:原始数据放在数据文件中,读出后排序,建立二叉排序树(结点:左子指针,数据,右子指针),可执行查找功能。... 题目如下:
原始数据放在数据文件中,读出后排序,建立二叉排序树(结点:左子指针,数据,右子指针),可执行查找功能。
展开
 我来答
百度网友24531c9
2008-07-12 · TA获得超过352个赞
知道小有建树答主
回答量:604
采纳率:0%
帮助的人:430万
展开全部
我不会C语言
这是我用C++编的
要改成C的话
1.指针赋值语句里的0都改成Null
2.输出语句从cout改成printf
3.头文件引用格式改一下

附源程序:
#include<iostream>
#include<fstream>
using namespace std;

typedef int elemType;
const char *FILEPATH = "data.txt"; //定义文件地址常量

struct BSTnode
{
elemType data;
BSTnode *LChild, *RChild;
BSTnode();
};

BSTnode::BSTnode()
{
data = 0;
LChild = 0;
RChild = 0;
}

class BinSearchTree
{
public:
BinSearchTree();
void insert(BSTnode *&t, int data);
void buildFromFile(const char *filepath);
void inOrder(BSTnode *t);
BSTnode *find(BSTnode *t, int data);

BSTnode *root;
int count;
};

BinSearchTree::BinSearchTree()
{
root = 0;
count = 0;
}

void BinSearchTree::insert(BSTnode *&t, int data)
{
if(t==0)
{
t = new BSTnode;
count++;
t->data = data;
}
else if(data<t->data)
insert(t->LChild, data);
else
insert(t->RChild, data);
}

void BinSearchTree::buildFromFile(const char *filepath)
{
ifstream infile(filepath, ios::in);
static int temp = 0;
infile>>temp;
while(temp!=-9999) //-9999作为结束标识符
{
insert(root, temp);
infile>>temp;
}
}

void BinSearchTree::inOrder(BSTnode *t)
{
if(t!=0)
{
inOrder(t->LChild);
cout<<t->data<<'\0';
inOrder(t->RChild);
}
}

BSTnode *BinSearchTree::find(BSTnode *t, int data)
{
if(t->data==data||t==0)
return t;
else if(data<t->data)
find(t->LChild, data);
else
find(t->RChild, data);
}

int main()
{
BinSearchTree bst;
bst.buildFromFile(FILEPATH); //从文件中读入
bst.inOrder(bst.root); //中序输出树的内容(即排序内容)
cout<<endl;

BSTnode *test = 0; //测试查找功能
test = bst.find(bst.root, 9);
cout<<test<<endl; //输出指针地址
cout<<test->data<<endl; //输出指针的内容(即要求查找的内容)

return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式