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

2025-03-10 12:46:46
推荐回答(1个)
回答1:

我不会C语言
这是我用C++编的
要改成C的话
1.指针赋值语句里的0都改成Null
2.输出语句从cout改成printf
3.头文件引用格式改一下

附源程序:
#include
#include
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(datadata)
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<data<<'\0';
inOrder(t->RChild);
}
}

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

int main()
{
BinSearchTree bst;
bst.buildFromFile(FILEPATH); //从文件中读入
bst.inOrder(bst.root); //中序输出树的内容(即排序内容)
cout<
BSTnode *test = 0; //测试查找功能
test = bst.find(bst.root, 9);
cout< cout<data<
return 0;
}