Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 4

Построить класс для работы с односвязным списком

02.05.2011, 22:19. Показов 4962. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Построить класс для работы с односвязным списком. Элементы списка – слова. Создать список, содержащий некоторую последовательность слов. Заменить в списке каждое вхождение заданного слова другим (также заданным).
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.05.2011, 22:19
Ответы с готовыми решениями:

Построить класс для работы с односвязным списком
Построить класс для работы с односвязным списком. Элемент списка – действительное число. Сформировать список, содержащий неубывающую...

Построить класс для работы с односвязным списком
При решении задач необходимо, без использования STL, описать класс, который используется для представления элементов а) массива с...

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

5
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
03.05.2011, 02:03
Цитата Сообщение от Demannfs Посмотреть сообщение
Построить класс для работы с односвязным списком. Элементы списка – слова. Создать список, содержащий некоторую последовательность слов. Заменить в списке каждое вхождение заданного слова другим (также заданным).
В классе - конструктор создает пустой список, деструктор - удаляет список.
Методы:
добавить в начало
удалить первый
поиск заданного слова
замена слова
Поля - указатель на голову списка.
Элемент списка - структура с двумя полями:
слово, тип строка
следующий, тип указатель на элемент списка-стркутру

Что из этого ты не можешь написать?
0
 Аватар для Gepar
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
03.05.2011, 03:32
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

У меня была лабараторная на двусвязный список, собственно реализация
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
#include <iostream>
#include <cstring>
using namespace std;
 
struct ListItem
{
    std::string data;       // Хранимые в элементе списка данные
    ListItem *prev, *next;  // Указатели на предыдущий и следующий элементы
 
    // Конструктор
    ListItem(const std::string data):prev(NULL),next(NULL)
    {
        this->data = data;
    }
 
    ListItem* getTail()
    {
        ListItem* item = this;
        while(item->next)
            item = item->next;
        return item;
    }
 
    ListItem* addToTail(const std::string data)
    {
        ListItem *item = new ListItem(data), *last = getTail();
        item->prev = last;
        last->next = item;
        return item;
    }
 
    ListItem* findLastItem(const std::string data)
    {
        ListItem* item = this, *last = NULL;
        while(item->next)
        {
            if(item->data == data)
            {
                last = item;
            }
            item = item->next;
        }
        return last;
 
    }
    bool insertAfterLastItem(const std::string data, ListItem* list)
    {
        ListItem* last = findLastItem(data), *next_item, *prev_item, *list_last;
        if(!last) return false;
        next_item = last->next;
        list_last = list->getTail();
        list_last->next = next_item;
        if(next_item)
            next_item->prev = list_last;
        list->prev = last;
        last->next = list;
        return true;
    }
 
    ~ListItem()
    {
        if(next) delete next;
    }
};
 
void print_list(ListItem* list)
{
    ListItem* item = list;
    while(item)
    {
        std::cout << item->data;
        item = item->next;
        if(item) std::cout << " ";
    }
    std::cout << std::endl;
};
 
void assigned(ListItem* list)
{
    ListItem* item=list;
    while (item)
    {
        item->data.assign(&item->data[1]);
        item=item->next;
    }
};
 
void plus_invert (ListItem* list)
{
    ListItem *item=list->getTail();
    while (item)
    {
        list->addToTail(item->data);
        item = item->prev;
    }
};
 
 
 
 
int main()
{
    ListItem *a = new ListItem("aa1");
    a->addToTail("aa2");
    a->addToTail("aa3");
    a->addToTail("aa4");
    std::cout << "List a: ";
    print_list(a);
 
 
    ListItem *b = new ListItem("bb1");
    b->addToTail("bb2");
    b->addToTail("bb3");
    b->addToTail("bb4");
    std::cout << "List b: ";
    print_list(b);
 
    a->insertAfterLastItem("aa3", b);
    std::cout << "Merged: ";
    print_list(a);
    assigned(a);
    cout<<"After deleting first symbol: ";
    print_list(a);
    plus_invert(a);
    cout<<"After inverting (and append): ";
    print_list(a);
 
    delete a;
 
    return 0;
}
Комментариев нет но название функций не случайные, думаю разберёшься. Делает что тебе надо кроме замены нужного тебе элемента, для него думаю функцию уж прикрутишь.
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
03.05.2011, 07:59
Gepar, Страааанный деструктор
1
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
03.05.2011, 09:47
Цитата Сообщение от ForEveR Посмотреть сообщение
Gepar, Страааанный деструктор
Похоже, здесь автор просто не различает "элемент списка" и "список"...
0
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 4
03.05.2011, 12:35  [ТС]
Комментариев нет но название функций не случайные, думаю разберёшься. Делает что тебе надо кроме замены нужного тебе элемента, для него думаю функцию уж прикрутишь.[/QUOTE]

Спасибо и на том , с прогай я уже разберусь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.05.2011, 12:35
Помогаю со студенческими работами здесь

Построить класс для работы с односвязным списком
Построить класс для работы с односвязным списком. Элементы списка – действительные числа. Создать два упорядоченных по возрастанию списка,...

Построить класс для работы с односвязным списком
Доброго времени суток, очень давно не обращался на ваш форум и вот снова прошу помощи. Построить класс для работы с односвязным...

Класс для работы с односвязным списком
Построить класс для работы с односвязным списком. Создать два списка: List1 и List2. Проверить, содержатся ли элементы списка List1 в...

Построить класс для работы с односвязным списком. Создать два списка: List1 и List2. Проверить, содержатся ли элементы списка List1 в списке List2 в у
Построить класс для работы с односвязным списком. Создать два списка: List1 и List2. Проверить, содержатся ли элементы списка List1 в...

Построить класс для работы со списком
Построить класс для работы со списком. Элемент списка содержит информацию о заявке на авиабилет: пункт назначения, номер рейса, фамилию и...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru