Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Ocean1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 32
1

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

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

Разработать динамическую структуру данных класс-список с возможностью хранить данные-объекты класса "комплексные числа". Список должен поддерживать следующие операции: добавление/удаление/доступ к данным в начале, конце списка и по индексу. Обязательно предусмотреть высвобождение памяти после удаления списка. Оценить расход памяти списком в байтах (общий размер = размер полезной нагрузки + размер вспомогательных структур).Односвязный список, объекты-данные хранить динамически, т.е. через указатели.
Очень нуждаюсь в вашей помощи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2015, 19:45
Ответы с готовыми решениями:

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

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

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

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

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

4
magirus
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
27954 / 15675 / 959
Регистрация: 15.09.2009
Сообщений: 67,837
Записей в блоге: 78
16.04.2015, 19:47 2
в помощи или сделании за тебя?
0
Ocean1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 32
16.04.2015, 21:01  [ТС] 3
как реализовать доступ к данным по индексу?
0
Почтальон
Модератор
698 / 575 / 119
Регистрация: 22.03.2015
Сообщений: 3,929
Завершенные тесты: 2
17.04.2015, 08:04 4
Вот как-то так:

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

Какой вопрос - такой ответ
0
Ocean1
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2015, 17:27

Преобразовать односвязный список в двусвязный список
Доброго времени суток! Помогите, пожалуйста, преобразовать программу из...

Односвязный список
Нужно составить код для односвязного списка (формирование и вывод). При этом...

односвязный список
Доброго времени суток! У меня такой вопрос: нужно разработать класс,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru