Язык С++ и программирование на нем. Рейзлин В.И. - 154 стр.

UptoLike

Составители: 

156
дит ни одной вершины, значение этой переменной должно равняться
нулевому указателю NULL.
Напишем программу, по ходу выполнения которой кодируется
последовательность натуральных чисел, расположенных во входном
файле NUM.txt. Для кодирования используем файл COD.txt, компонен-
тами которого являются целые числа. Кодом F(k) числа k будем счи-
тать k-ю по порядку компоненту файла COD.txt.
struct node {
int num, code;
node* left, *right;
node (int n, int c, node* l, node* r){
num = n; code = c; left = l; right = r;}
};
int f(int);
void insert(int n, node* root){
node* temp = root;
node* old;
while (temp !=0 ) {
old = temp;
if (temp->num = = n) { cout << temp->code <<” ”; return; }
if (temp->num > n) temp = temp->left;
else temp = temp->right;
}
int k = f(n); cout << k << “ “;
if (old->num > n) old->left = new node(n, k, 0, 0);
else old->right = new node(n, k, 0, 0);
}
ifstream num ( “num.txt ), cod ( “cod.txt“ );
int f(int k) { int i, j;
cod.seekg(0); // Устанавливает позицию чтения из файла в 0.
for ( i = 1; i <=k; i++) cod >> j;
return j;
}
void main(){
int n;
num >> n;
node* root = new node (n, f(n), 0, 0); cout << root->code << “ “;
while (num.peek() != EOF){ num >> n;
insert (n, root);
}}