С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 32
1

Односвязный список объектов

16.04.2015, 19:45. Показов 4844. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Разработать динамическую структуру данных класс-список с возможностью хранить данные-объекты класса "комплексные числа". Список должен поддерживать следующие операции: добавление/удаление/доступ к данным в начале, конце списка и по индексу. Обязательно предусмотреть высвобождение памяти после удаления списка. Оценить расход памяти списком в байтах (общий размер = размер полезной нагрузки + размер вспомогательных структур).Односвязный список, объекты-данные хранить динамически, т.е. через указатели.
Очень нуждаюсь в вашей помощи.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Блог
16.04.2015, 19:45
Ответы с готовыми решениями:

Создать односвязный список из объектов заданного типа
Добрый вечер! Собственно задачка: Определить пользовательский тип, включающий в себя следующие...

Сформировать список из 10 книг, используя динамическую структуру данных односвязный список
друзья спасайте Сформировать список из 10 книг, используя динамическую структуру данных...

Создать класс «Квартира», в котором список комнат реализовать как односвязный список
Добрый день,написал фот такой клас по заданию:Создать класс «Квартира», в котором список комнат...

Составить односвязный список на основе класса, объекты которого будут формировать этот список
Составить односвязный список на основе класса, объекты которого будут формировать этот список. В...

4
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
28046 / 15779 / 983
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
16.04.2015, 19:47 2
в помощи или сделании за тебя?
0
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 32
16.04.2015, 21:01  [ТС] 3
как реализовать доступ к данным по индексу?
0
управление сложностью
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
17.04.2015, 08:04 4
Вот как-то так:

ТипПеременной Переменная;
Переменная = Данные[Индекс];

Какой вопрос - такой ответ
0
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 32
04.05.2015, 17:27  [ТС] 5
я написал код,но он некорректно работает : вводим два элемента ,ищем второй по индексу,выводим на экран,а в списке всего один элемент,после этого в конец элементы не добавляются+их нельзя найти,прошу помогите подправить
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
#include <iostream>
 
 
using namespace std;
 
 
class Complex     
{public:
    int r,i;    
    Complex *next; 
};
 
class List   
{
    Complex *head, *last; 
public:
    List() :head(NULL), last(NULL){}; 
    ~List()
    {
         while (head) 
    {
        last = head->next; 
        delete head; 
        head = last; 
    }
    }
 
    void add(int r, int i)
    {
        Complex *temp=new Complex;
        temp->next=head;
        head=temp;
         temp->r = r;
    temp->i=i;
    }
     void add_end(int r,int i)
    {
        
        Complex *temp = new Complex; 
    
    temp->next = NULL;  
    temp->r = r;
    temp->i=i;
 
    if (head != NULL) 
    {
        last->next = temp; 
        last = temp; 
    }
    else 
    {
        head = last = temp; 
    }
    }
     void search(int index1)
     {
 
        int n = 1;
        Complex *temp = head;
        Complex *tempL = NULL;
        
        while (n != index1)
        {
            n++;
            tempL = temp;
            temp = temp->next; 
        }
        
        
        if(tempL == NULL)
            head = temp->next;
        else
            tempL->next = temp->next;
        
        cout << "Найден элемент " << temp->r  << "*i" << temp->i << endl;
     }
        void del(int index)
    {
        
        int n = 1;
        Complex *temp = head;
        Complex *tempL = NULL;
        
        while (n != index)
        {
            n++;
            tempL = temp;
            temp = temp->next; 
        }
        
        
        if(tempL == NULL)
            head = temp->next;
        else
            tempL->next = temp->next;
        
        cout << "Удалили " << temp->r  << "i*" << temp->i << endl;
        delete temp;
    }
    void show()
    {
        if (head == NULL)
        cout<<"список пуст"<<endl;
    
    Complex *temp = head; 
    while (temp != NULL) 
    {
        cout << temp->r << "+i*"<<temp->i<<endl; 
        temp = temp->next; 
    }
    cout << endl;
    } 
   
 
}; 
 
    
    int main()
{
    
 
    setlocale(LC_ALL, "Russian");
    List lst; 
    cout<<"1 - добавить в конец списка"<<endl;
    cout<<"2 - добавить в начало списка"<<endl;
    
    cout<<"3 - удалить из списка"<<endl;
    cout<<"4 - показать список"<<endl;
    cout<<"5 - найти элемент по индексу"<<endl;
    
    cout<<"0 - выход"<<endl;
  int c,x,y;
    
    while (true)
    { 
        cout<<"выберите действие: "<<endl;
        
    cin>>c; 
        
    if (c==0)
    {break;}
        
        
        
        switch(c)
        {
                case 2:
            {
                cout<<"введите элемент, который хотите добавить в список: "<<endl<<"Введите действительную часть комплексного числа"<<endl;
        cin>>x;
        cout<<"Введите мнимую часть "<<endl;
        cin>>y;
        lst.add(x,y);
        break;
            }
        
        case 1:
            {
        cout<<"введите элемент, который хотите добавить в список: "<<endl<<"Введите действительную часть комплексного числа"<<endl;
        cin>>x;
        cout<<"Введите мнимую часть "<<endl;
        cin>>y;
        lst.add_end(x,y);
        break;
 
            }
        case 3:
            {
         cout<<"введите номер элемента списка, который хотите удалить: "<<endl;
         cin>>x;
         
         lst.del(x);
         break;
            }
        case 4:
            {
                lst.show();
                break;
            }
            
        
        case 5:
            {
                cout<<"введите номер элемента ,который хотите найти: "<<endl;
                cin>>x;
                lst.search(x);
                break;
            }
    
    
        }
        
         system("pause");
}
    }
0
04.05.2015, 17:27
BasicMan
Эксперт
19315 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
Блог
04.05.2015, 17:27
Помогаю со студенческими работами здесь

Односвязный список: заносить в новый список элементы исходного, которые больше заданного значения
Можете пожалуйста помочь в решении проблемы не. Не могу создать функцию которая будет с созданного...

Заменить массив структур на односвязный список, и на двусвязный список
Взять текст задания и заменить массив структур на односвязный список, и на двусвязный список ...

Создать двусвязный список групп факультета, где каждая группа представляет собой односвязный список студентов
Задание: создайте двусвязный список групп факультета. Каждая группа представляет собой односвязный...

Задали односвязный линейный список с целыми числами. Создать новый список, который содержит элементы заданного списка в обратном порядке
Задали односвязный линейный список с целыми числами. Создать новый список, который содержит...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru