0 / 0 / 0
Регистрация: 26.11.2016
Сообщений: 13
1

Реализовать пользовательский класс "Двунаправленный список"; реализовать добавление и удаление элементов

27.11.2016, 09:51. Показов 1448. Ответов 4
Метки нет (Все метки)

Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить К элементов с заданными номерами. Добавить К элементов в начало списка.

Ребят, может кто подскажет как делать это, а то вообще представления не имею, может кто пример задания такого знаете. Напишите кто помочь может.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2016, 09:51
Ответы с готовыми решениями:

Реализовать класс "Список"; реализовать добавление и удаление элементов
помогите написать код по спискам. надо создать линейный односвязный (двухсвязный) список. Из...

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

Реализовать пользовательский класс "Связанный список" (не понимаю код)
Всем привет , может кто рассказать конкретно что происходит в тех строках где стоят комментарии....

Реализовать пользовательский класс "Список" и функции-члены для создания, просмотра и удаления списка
Добрый день. Имеются несколько функций для работы с однонаправленным списком. Не получается...

4
0 / 0 / 0
Регистрация: 26.11.2016
Сообщений: 13
28.11.2016, 11:51  [ТС] 2
поход рил сложное задание, я могу только реализовать, а дальше вообще не понимаю как, я ж не прошу написать ее мне
0
sourcerer
28.11.2016, 12:10
  #3
 Комментарий модератора 
intium, пожалуйста, прочитайте правила форума.
Особое внимание обратите на пункт 4.3 (порядок именования тем).
0
Эксперт CЭксперт С++
5087 / 2272 / 332
Регистрация: 20.02.2013
Сообщений: 5,598
Записей в блоге: 19
28.11.2016, 12:10 4
Цитата Сообщение от intium Посмотреть сообщение
поход рил сложное задание
intium, Вы вниз глазки опустите, страничку ползунком вниз промотайте, там таких тем вагон и маленькая тележка.
0
0 / 0 / 0
Регистрация: 26.11.2016
Сообщений: 13
30.11.2016, 16:26  [ТС] 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
#include <iostream>       
#include <string>         
#include <fstream>        
 
using namespace std;      
 
int n, nom;
struct Spisok 
{
   string  word;             // Информационное поле.
   Spisok  *next, *prev;     // Адресное поле. 
};
typedef Spisok *Spis;
 
Spis Formir ()             // Формирование двунаправленного списка. Создание одного элемента.
{
    Spis NewSpisok = new (Spisok);
    cout << " Фамилия: ";
    cin>>(NewSpisok->word);
    NewSpisok->prev = 0;
    NewSpisok->next = 0;
    return NewSpisok;
}
 
Spis Sozdan()               // Создание списка.
{
    Spis Head, p, u;
    do
    {
    cout << " \n\nВведите количество записей в списке: "; cin >> n;
    if(n<=0) cout << " Столько элементов быть не может...";
    }
    while (n<=0);
    
    if (n>0)
    {
        Head=Formir();
        u=Head;
        for (int i=1; i<n; i++)
        {
            p=Formir();
            p->prev = Head;
            Head->next = p;
            Head=p;
        }
        return u;
    }
    else
        return 0;
}
 
void Out (Spis u)           // Печать списка.
{   
    Spis p = u;
    if (p==0)
    {
        cout << " Список пустой...\n";
        return;
    }
    while (p!=0)
    {
        cout << p->word<<endl;
        p=p->next;
    }   
}
 
void Delete(Spis &Head)     // Удаление элемента с заданным номером.
{   
    for (int i=0; i<nom; i++) {Head->next=NULL;}
}
 
void addition(Spis &Head)        // Добавление элемента в начало списка.
{
Spis now;
now=Formir();
now->next = Head;
Head=now;
}
 
void in_file (const Spis &Head,char x[])     // Запись списка в файл.
{
    
    ofstream u (x);
    if(x)
    {
        Spis p = Head;
        if (!p)
        {
            u << "Список пустой...\n";
            return;
        }    
        while (p!=0)
        {
            u << p->word << endl;
            p=p->next;
        }   
    }
    u.close();
}
 
Spis inFile(ifstream &f)     // Восстановление списка из файла. 
{       
    Spis NewSpisok = new (Spisok);  
    f >> NewSpisok->word;
    NewSpisok->prev=0;
    NewSpisok->next=0;
    return NewSpisok;
}
Spis vosstan(char u[])
{
    ifstream f(u);
    Spis Head = inFile(f);
    Spis pop = Head;
    Spis temp;
    while (!f.eof())
    {
        temp=inFile(f);
        if(f.eof())
            break;
        Head->next=temp;
        temp->prev=Head;
        Head=temp;
    }
    return pop;
}
void Delete_list(Spis&Head)          // Уничтожение списка.
{
    Spis p = Head;
    Spis temp;
    if (!p)
    {
        cout << "Список пустой...\n";
        return;
    }
    while (p!=0)
    {
        temp=p;
        p=p->next;
        delete(temp);
    }   
}
 
int main()
{
    setlocale(LC_ALL, "Russian");          
    
    cout << " Записи в линейном списке содержат ключевое поле типа string.\n Сформировать двунаправленный список.\n Удалить из него элемент с заданным номером, добавить элемент в начало списка." << endl; 
    Spis Head;
    Head = Sozdan();
    cout << " Исходный список: "; cout << endl;
    Out(Head);
    cout << " Введите номер удаляемого элемента: "; cin >> nom;
    Delete(Head); 
    cout << " Список после удаления элемента: "; cout << endl;
    Out(Head);
    cout << endl;
    cout << " Добавление элемента:"; cout << endl;
    addition(Head);
    cout << " Список с добавленным элементом: "; cout << endl;
    Out(Head); cout << endl;
    char x[100];
    cout << " Куда записать список? (название файла с расширением!)   "; cin >> x;
    in_file (Head,x); cout << endl;
    cout << " Список удаляется...\n"; cout << endl;
    Delete_list(Head);
    cout << " Список пустой..." << endl; cout << endl;
    cout << " Список восстанавливается...\n"; cout << endl;
    Spis head=vosstan(x);
    cout << " Итоговый список: "; cout << endl;
    Out(head); cout << endl;
system("pause");
return 0;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2016, 16:26
Помогаю со студенческими работами здесь

Реализовать пользовательский класс "Список"
Нужна помощь с заданием по спискам, вот само задание: 12. Создать линейный односвязный...

Реализовать пользовательский класс "Список"
Помогите, немогу понять как делать список в ооп на с++, если можно примеры.

Двунаправленный список (добавление/удаление элементов в голову, просмотр списка, реализовать дублирование элементов с заданным значением)
Здравствуйте! Помогите написать программу, обеспечивающую работу с двунаправленным нециклическим...

Класс "Студент" реализовать удаление, добавление и изменение
Класс &quot;Студент&quot; реализовать удаление, добавление и изменение, все готово, только нужно...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru