Скачать лекции по СиАОД


СиАОД_теория_МК№1 (сейчас можно Скачать лекции по СиАОД по прямой ссылке без регистрации). Лекции в файле ворда.

// Пример программы работы с бинарным деревом

#include <stdio.h>

#include <conio.h>

#include <string.h>

struct TelNum;

void printtreepre(TelNum * );    //обход с корня дерева, левое поддерево, правое поддерево

void printtreein(TelNum * );  //обход с вершины правое поддерево,корень, левое поддерево

void printtreepost(TelNum * ); //обход с вершины левое поддерево, правое поддерево,корень

int inputData(TelNum * );

TelNum * addtree(TelNum *, TelNum *);

struct TelNum

{

TelNum * left, *right;

long number;

char name[30];

};

//    Описание: печать списка

void printtreepre(TelNum * root)

{

if(!root) return;

if(root->number)

printf(«номер %7li фамилия  %s\n»,root->number,root->name);

printtreepre(root->left);

printtreepre(root->right);

}

void printtreein(TelNum * root)

{

if(!root) return;

if(root->number)

printtreein(root->left);

printf(«номер %7li фамилия  %s\n»,root->number,root->name);

printtreein(root->right);

}

void printtreepost(TelNum * root)

{

if(!root) return;

if(root->number)

printtreepost(root->left);

printtreepost(root->right);

printf(«номер %7li фамилия  %s\n»,root->number,root->name);

}

//    Описание: ввод данных

int inputData(TelNum * n)

{

printf(«Номер?»); scanf(«%7li»,&n->number);

if(!n->number) return 1;

printf(«Имя?  «); scanf(«%30s»,&n->name);

return 0;

}

//   Добавление узла к дереву

TelNum * addtree(TelNum *root, TelNum *temp) {

if(root==NULL) {   //добавление узла в вершину дерева

TelNum * root = new TelNum;

root->number=temp->number;

strcpy(root->name,temp->name);

root->left=NULL;

root->right=NULL;

return root;

}

else {

if(root->number>temp->number)

root->left=addtree(root->left,temp);

else      root->right=addtree(root->right,temp);

}

return root;

}

void main(void)

{

TelNum * start = NULL; //сторож

TelNum * temp = new TelNum;

do{                         //блок добавления записей

if(inputData(temp))

{delete temp;

break;

}

else

start=addtree(start,temp);

}while(1);

printtreepre(start);  //ebcahgi прямой обход

getch();

printtreein(start);   //ighebca обратный обход

getch();

printtreepost(start); //acbighe концевой обход

getch();

}

Загрузка...