Бинарное дерево

Тема в разделе "C/C++/C#", создана пользователем tgg, 22 фев 2010.

Наш партнер Genesis Hackspace
  1. tgg

    tgg Гость

    Программа:
    Составить программу, которая содержит текущую информацию о книгах в библиотеке.
    Сведения о книгах включают:
    - номер УДК;
    - фамилию и инициалы автора;
    - название;
    - год издания;
    - количество экземпляров данной книги в библиотеке.
    Программа должна обеспечивать:
    - начальное формирование данных обо всех книгах в библиотеке в виде двоичного дерева;
    - добавление данных о книгах, вновь поступающих в библиотеку;
    - удаление данных о списываемых книгах;
    - по запросу выдаются сведения о наличии книг в библиотеке, упорядоченные по годам издания.

    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код</div></div><div class="sp-body"><div class="sp-content">
    Код (Text):
    #include <iostream>
    #include <locale>
    #include <ctime>
    #include <string>
    using namespace std;

    typedef struct library{
    char author[100];  
    int udk;     
    char title[20];  
    int year;  
    int q; 
    struct library * next; 
    }Node;

    void addNode( Node *& list );
    void deleteNode( Node *& list, const int num );
    void outNodeNum( const Node * list, int num);

    void outNode( const Node * list );
    void out( const Node * list );
    bool if_end( char * ch, wchar_t *str = L"" );
    //_________ MAIN_________________
    int main(int argc, char *argv[])
    {
    Node * list = NULL;
    wcout.imbue(locale(".866"));
    addNode( list );
    outNode( list );
    int num;
    wcout << L"\n\nВведите номер УДК для просмотра информации о данной книге > ";
    cin >> num;     getchar();
    wcout << L"\n\nКнига с номером УДК "; cout << num;
    outNodeNum( list, num );
    wcout << L"\n\nУдаление книги по заданному номеру УДК > ";
    cin >> num;     getchar();
    deleteNode( list, num );
    wcout << L"\n\nОставшиеся книги:";
    outNode( list );
    wcout << L"\n\nНажмите клавишу Enter для выхода из программы";
    getchar(); // пауза
    return 0;
    }
    //________ END MAIN ______________
    void addNode( Node *& list ){
    wcout << L"Введите данные о книгах:\n";
    wcout << L"Для выхода введите слово \"end\"\n\n";
    int num = 0;
    while(1){
    num++;
    wcout << L"\nДанные о книге с № " << num << endl;
    Node * n = new Node;
    if( if_end( n->author,L"Введите автора книги > " )) break;
    if( if_end( n->title, L"Введите название > " )) break;
    wcout << L"Введите УДК > ";
    cin >> n->udk;

    wcout << L"Введите год издания > ";
    cin >> n->year;
    wcout << L"Введите кол-во книг > ";
    cin >> n->q;getchar();

    n->next = list;
    list = n;
    }
    }
    bool if_end( char * ch, wchar_t *str ){
    wcout << str;
    gets( ch );
    if( strcmp( ch, "end" )) return false;
    return true;
    }
    void out( const Node * list, int num ){
    wcout << L"\n\nКнига с УДК № " << num;
    wcout << L"\nАвтор книги > " << list->author;
    wcout << L"\nНомер УДК > "; cout << list->udk;
    wcout << L"\nНазвание > " << list->title;
    wcout << L"\nГод издания > "; cout << list->year;
    wcout << L"\nКол-во книг > "; cout << list->q;
    }
    void outNode( const Node * list ){
    int n = 1;
    for(; list; list = list->next ){
    out( list, n );
    n++;
    }
    }
    void outNodeNum( const Node * list, int num ){
    int n = 1;
    for(; list; list = list->next ){
    if( list->udk == num )
    out( list, n++ );
    }
    }
    void deleteNode( Node *& list, const int num ){
    int n = 1;
    Node *x, *y = list, *begin = list;
    wcout << L"\n\n_____ Удаление: ________";
    while( list ){
    if( list->udk == num ){
    x = list->next;
    out( list, n );
    n++;
    if( list != y ){
    delete list;
    y->next = list = x;
    }// end if( list != y ){
    else{
    delete list;
    y = list = x;
    }// end if( list != y ){
    }// end if( list->UDK == num ){
    else{
    y = list;
    list = list->next;
    }// end else if( list->UDK == num )
    }// end while()
    list = begin;
    }// end deleteNode()
    Как организовать биноарное дерево? исправьте, пожалуйста, программу
     
  2. sg^_^milytia

    sg^_^milytia Гость

Загрузка...
Похожие Темы - Бинарное дерево
  1. Maestresa
    Ответов:
    2
    Просмотров:
    1.721
  2. newslayer
    Ответов:
    0
    Просмотров:
    1.127
  3. European
    Ответов:
    0
    Просмотров:
    2.079
  4. Hanja
    Ответов:
    0
    Просмотров:
    1.075
  5. MrSpoon
    Ответов:
    0
    Просмотров:
    1.074

Поделиться этой страницей