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

Реализуйте АТД “Список” для любого типа данных - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Даны две последовательности а1,а2,...аn и b1, b2, ... bn (m<n). В каждой из них члены различны. http://www.cyberforum.ru/cpp-beginners/thread402257.html
Даны две последовательности а1,а2,...аn и b1, b2, ... bn (m<n). В каждой из них члены различны. Верно ли, что все члены второй последовательности входят в первую последовательность входят в первую последовательность?
C++ Ругается на функцию В чём тут ошибка? #include <iostream> #include <string> const int n=3; http://www.cyberforum.ru/cpp-beginners/thread402250.html
написать программу, которая содержит текущую информацию о продажах билетов на теплоход C++
C++. написать программу, которая содержит текущую информацию о продажах билетов на теплоход. Сведения о каждой продаже содержат: • Пристань назначения; • Номер рейса • Фамилию и инициалы пассажира • Стоимость билета • Желаемая дата отплытия Программа должна решать следующие задачи: • Начальное формирование данных обо всех продажах билетов в кассе в виде списка. • Добавление продажи в...
C++ Массив, заполненный 1 и 0. Найти путь, состоящий из нулей, от точки до точки.
Доброго времени суток всем! Вот такая задача, ничего не могу даже сообразить по ней, подкиньте идеи, пожалуйста (ну или код в C++ ) Дан массив А(м х м), заполненный "1" и "0". С клавиатуры вводятся координаты i,j двух точек мас-сива. Определить, существует ли путь от первой ко второй точке, состоящий из одних "0". Вывести найденный путь в удобной форме.
C++ Обращение матрицы методом Гаусса. http://www.cyberforum.ru/cpp-beginners/thread402207.html
Если кто знает, напишите пожалуйста программу обращения любой матрицы методом Гаусса.
C++ Использование массивов в Dev-c++ Написать функцию для удаления строки из двумерного массива. Оставшиеся строки должны быть расположены плотно, недостающие элементы заменяются 0. С помощью разработанных функций исключить из массива строки с номерами от А до В. подробнее

Показать сообщение отдельно
№1
2 / 2 / 0
Регистрация: 15.03.2011
Сообщений: 19

Реализуйте АТД “Список” для любого типа данных - C++

08.12.2011, 18:48. Просмотров 1202. Ответов 2
Метки (Все метки)

Помогите решить задачку.
1. Реализуйте АТД “Список” для любого типа данных и его операторы (INSERT, LOCATE, RETRIEVE, DELETE, NEXT, PREVIOUS, MAKENULL, FIRST, PRINTLIST), используя массив.
2. Создайте программу позволяющую объединять несколько списков в один.

Первую я вроде бы сделал... А вторую надо на на основе нее, но у меня не получается. Вот первая:
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
119
120
121
122
123
#include <iostream>
using namespace std;
 
typedef int T;
 
struct elem
{
    T val;
    elem* prev;
    elem* next;
};
 
class list{
private:
    static const int def_size = 4;
    T* values;
    int count, val_size;
    void expand(int);
public: 
    list();
    ~list();
    list(const list&);
    list& operator=(const list&);
    T* BEGIN() const {return values;}
    T* END() const {return values+count;};
    T NEXT(int i) const {return *(values+i+1);}
    T PREVIOUS(int i) const {return *(values+i-1);}
    void INSERT(T value, int position);
    int FIND(T value) const; 
    int SIZE() const {return count;}
    void CLEAR();
    void DELETE(int position);
    int operator[](int i) const {return values[i];};
friend  ostream& operator<< (ostream& os, const list& l); 
};
list::list(){
    count = 0;
    val_size = def_size;
    values = new T[val_size];
}
list::list(const list& l){
    count = l.count;
    val_size = l.val_size;
    values = new T[val_size];
    for(int i=0; i< count; i++)
        values[i] = l.values[i];
}
list& list::operator=(const list& l){
    if(&l == this) return *this;
    delete[] values;
    count = l.count;
    val_size = l.val_size;
    values = new T[val_size];
    for(int i=0; i< count; i++)
        values[i] = l.values[i];
    return *this;
}
void list::expand(int increment){
    val_size += increment;
    T* newmas = new T[val_size];
    for(int i=0; i< count; i++)
        newmas[i] = values[i];
    delete[] values;
    values = newmas;
}
void list::CLEAR(){ // очистить
    count = 0;
    val_size = def_size;
    delete[] values;
    values = new T[val_size];
}
void list::INSERT(T value, int position){ // вставить в список новый элемент
    if(count >= val_size-1) expand(5);
    for(int i=count; i>= position; i--){
        values[i+1] = values[i];
    }
    values[position] = value;
    count ++;
}
void list::DELETE(int position){ // удалить этот элемент
    for(int i= position; i< count; i++)
        values[i] = values[i+1];
    count --;
}
int list::FIND(T value) const{ // найти элемент со значением value
    for(int i=0; i< count; i++)
        if(values[i] == value) return i;
    return -1;
}
list::~list(){
    delete[] values;
}
ostream& operator << (ostream& os, const list& l) {
    if(l.count == 0)return os << "empty list\r\n";
    for (int i = 0; i < l.count; i++)
        cout << l.values[i] << "  ";
    return os << "\r\n";
}
int main() {
    list l;
    cout << l;
    l.INSERT(10, 0);
    cout << l;
    l.INSERT(21, 1);
    cout << l;
    l.INSERT(55, l.FIND(10));
    cout << l;
    l.INSERT(57, 2);
    list m;
    m = l;
    cout << m;
    cout << l;
    cout << l.NEXT(l.FIND(55)) << endl;
    cout << l.PREVIOUS(l.FIND(21)) << endl;
    cout << l.PREVIOUS(l.SIZE()) << endl;
    cout << l.SIZE() << endl;
    cout << *l.BEGIN() << endl << *(l.END()-1) << endl;
    l.DELETE(l.FIND(21));
    cout << l;
    l.CLEAR();
    m.CLEAR();
    cout << l;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru