Форум программистов, компьютерный форум CyberForum.ru

Списки - C++

Восстановить пароль Регистрация
 
iKarma
9 / 9 / 0
Регистрация: 17.10.2011
Сообщений: 114
20.11.2011, 22:05     Списки #1
В общем сабж - как переделать прогу под односвязный и двусвязный списки, а то у меня ни то и ни сё =) Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include "stdafx.h"
#include <iostream>
#include <conio.h>
 
using namespace std;
 
struct BOOKS {
    char Author; //автор
    char Title;  //название книги
    int Year; //год
    int Quantity; //количество экземпляров
    BOOKS *next;  //указатель на след элемент
};
 
class BOOK {
public:
    BOOK();
    void Input(char Author,char Title,int Year,int Quantity); //ввод данных
    void Print(); //вывод введенных данных
    void Output(int Year); //вывод результата
    ~BOOK();
private:
        BOOKS *first; //указатель на перв элемент
    BOOKS *prev; //указатель на пред элемент
};
 
BOOK::BOOK() {
    first = NULL;
    prev = NULL;
}
 
BOOK::~BOOK() {
    while (first != NULL)
    {
        BOOKS *elem = first;
        first = first->next;
        delete elem;
    }
}
 
void BOOK::Input(char Author,char Title,int Year,int Quantity) {
    BOOKS *elem=new BOOKS();
    if (first==NULL)
        first = elem;
    else 
        prev->next = elem;
    elem->Author = Author;
    elem->Title = Title;
    elem->Year = Year;
    elem->Quantity = Quantity;
    elem->next = NULL;
    prev = elem;
}
 
void BOOK::Print() {
    int i = 0;
    BOOKS *elem = first;
    while (elem != NULL) {
        cout << "Book #" << i+1 << "\n" << "Title: " << elem->Title << " Author: " << elem->Author << " Year: " << elem->Year << " Quanitity: " <<elem->Quantity << "\n";
        elem = elem->next;
        i++;
    }
}
 
void BOOK::Output(int Year) {
    int i = 0, k = 0;
    BOOKS *elem = first;
    while (elem != NULL)
    {
        if (elem->Year == Year) {
            k++;
            cout << "Book #" << i+1 << "\n" << "Title: " << elem->Title << " Author: " << elem->Author << " Year: " << elem->Year << " Quanitity: " << elem->Quantity << "\n";
        }
        elem = elem->next;
        i++;
    }
    if (k==0)
        cout << "No books of such year!\n";
    cout << "--------------------------------------------------------------------------------\n";
    cout << "Number of the books of " << Year << " = " << k << "\n";
}
 
int main() {
    int i, n, year;
    char Author; //автор
    char Title;  //название книги
    int Year; //год
    int Quantity; //количество экземпляров
    BOOK MyLibrary;
    cout << "Enter the number of the books: ";
    cin >> n;
    cout << "--------------------------------------------------------------------------------\n";
    for (i=0; i<n; i++){
        cout << "Book #" << i+1 << "\n";
        cout << "Title: ";
        cin >> Title;
        cout << "Author: ";
        cin >> Author;
        cout << "Year: ";
        cin >> Year;
        cout << "Quanitity: ";
        cin >> Quantity;
        MyLibrary.Input(Author, Title, Year, Quantity);
    }
    cout << "--------------------------------------------------------------------------------\n";
    cout << "Your library is consisted of next books:\n";
        MyLibrary.Print();
    cout << "--------------------------------------------------------------------------------\n";
    cout << "Enter the year of the search: ";
    cin >> year;
    cout << "--------------------------------------------------------------------------------\n";
    cout << "Your search results: \n";
    MyLibrary.Output(year);
    cout << "--------------------------------------------------------------------------------\n";
    cout << "For exit press any key...";
    getch();
    return 0;
}
Добавлено через 6 часов 14 минут
вверх
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2011, 22:05     Списки
Посмотрите здесь:

C++ C++ списки
C++ Списки в С++
Списки C++
списки C++
списки C++
Списки C++
C++ Списки
Списки С++ C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 17:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru